Fehler: Mehr als ein Modul stimmt überein. Verwenden Sie die Option zum Überspringen des Imports, um den Import der Komponente in das nächstgelegene Modul zu überspringen


316

Wenn ich versuche, eine Komponente in der Winkel-CLI zu erstellen, wird mir dieser Fehler angezeigt. Wie werde ich es los?

Fehler: Mehr als ein Modul stimmt überein. Verwenden Sie die Option zum Überspringen des Imports, um den Import der Komponente in das nächstgelegene Modul zu überspringen.

Ich verwende Angular Cli Version: 1.4.1

Antworten:


690

Geben Sie das Modul mit dem Parameter --module an. Wenn das Hauptmodul beispielsweise app.module.ts lautet, führen Sie Folgendes aus:

ng g c new-component --module app

Oder wenn Sie sich in einem anderen Verzeichnis befinden

ng g c component-name --module ../

23
in meinem Fall war es ng g c admin/manageUsers ---module ../app
Alexus1024

In meinem Fall musste ich sicherstellen, dass ich mich dabei im App-Ordner befand
tree_are_great

80

Versuchen Sie dies: Es funktioniert für mich

ng generate component componentName --module=app.module


1
Funktioniert bei mir. Vielen Dank. [Angular CLI: 1.7.4 // Knoten: 9.8.0 // Betriebssystem: Linux x64 // Angular: 5.2.9]
NajlaBioinfo

53

Dies ist darauf zurückzuführen, dass die Generation versucht hat, Ihre Komponente einem Modul hinzuzufügen, dh diese Zeile hinzuzufügen

import { MyComponent } from './Components/my-component/my-component.component';

aber es wurden 2 Module gefunden.

Wie hier angegeben , haben sie es in einer Situation behoben, in der es Ihnen gut geht, solange Sie im Stammordner src / app nur 1 Modul haben. Verschieben Sie die sekundären Module einfach in einen Unterordner.

Ansonsten muss man verwenden --module


9
Dies scheint die nützlichste Antwort zu sein, da Sie das Modul nicht ständig angeben müssen, danke.
Arwin

Ja. Meine zusätzlichen Module wurden in einen modulesUnterordner verschoben , und jetzt ist alles in Ordnung.
Crush

1
Vielen Dank für die Erinnerung, endlich fand ich das zweite Modul: RoutingModule und verschob es in den Unterordner
Zheng Kai

36

Es funktioniert für mich

ng g component component-name --skip-import

7
Eine wichtige Sache zu beachten ist, dass diese Methode diese Komponenten nicht automatisch in die Datei app.module.ts importiert. Dies muss also manuell erfolgen.
Gel

11

Nur ein kleines Update zu Zishas Antwort.

In meinem Projekt wurden alle Module in einem Ordner namens "modules" abgelegt, und alle Komponenten wurden im Ordner "components" unter "src / app" abgelegt.

Ordnerstruktur

Um eine Komponente unter einem bestimmten Pfad zu erstellen, habe ich die folgende Syntax verwendet:

ng gc Komponentenpfad / Komponentenname - Modul Module_Pfad / Modulname

Beispiel:

ng gc Komponenten / Login - Modul Module / App


1
Ich weiß nicht, aber ist es nicht eine "bessere" Konstruktionspraxis, Ihre Komponenten in den zugehörigen Modulen zu platzieren?
Ojonugwa Jude Ochalifu

8

Angular CLI: 6.0.8
Knoten: 10.4.0
Betriebssystem: Linux x64
Angular: 6.0.4

Falls sich ein Funktionsmodul (z. B. manager.module.ts im Unterordner "/ manager") befindet und das Routingmodul in das separate NgModule (z. B. manager-routing.module.ts ) ausgelagert ist, wird die folgende Fehlermeldung angezeigt :

Es stimmt mehr als ein Modul überein. Verwenden Sie die Option zum Überspringen des Imports, um den Import der Komponente in das nächstgelegene Modul zu überspringen.

wird nicht angezeigt und die Komponente wird ordnungsgemäß generiert und dem Modul manager.module.ts hinzugefügt .

ABER ACHTUNG der Namenskonvention! Der Name des Routing-Moduls muss mit " -routing " enden !

Wenn dem Routingmodul ein Name wie z. B. manager-router.module.ts zugewiesen wird, beschwert sich die CLI mit der Fehlermeldung und erwartet, dass Sie die Option --module angeben, um den Komponentenimport automatisch hinzuzufügen:

ng generate component some-name --module=manager.module.ts

oder

ng generate component some-name --skip-import

Wenn Sie den Import der Komponente lieber manuell hinzufügen möchten


Das -hat den Trick gemacht! Ich hatte lib-name.routing.module.tsstatt lib-name-routing.module.ts.
Mvermand

7

Es gibt zwei Möglichkeiten, um dieses Problem zu lösen.

1) Überspringen Sie (mit dem Befehl --skip-import in) den Standardimport und erstellen Sie eine Komponente. Sobald die Komponente erstellt wurde, importieren Sie sie manuell, wo immer Sie sie verwenden möchten.

ng generate component my-component --skip-import

2) Geben Sie den Modulnamen explizit dort an, wo er importiert werden soll

ng generate  component  my-component --module=my-module.module

4

Wenn App oder Lib mehrere verschachtelte Module haben

myApp
  > src
    > app
      app.module.ts
      > routes
        > login
          > auth
          login.module.ts

Angular CLI

ng g component routes/login/auth/my-auth --module=routes/login/login.module.ts 

NRWL NX Angular CLI

ng g component routes/login/auth/my-auth --project=myApp --module=routes/login/login.module.ts

Ergebnis

myApp
  > src
    > app
      app.module.ts
      > routes
        > login
          > auth
            > my-auth
              my-auth.component.ts etc...
          login.module.ts

3

Beim Versuch, eine neue Komponente unter einem Ordner zu erstellen, wurde der folgende Fehler angezeigt.

Fehler: Mehr als ein Modul stimmt überein. Verwenden Sie die Option zum Überspringen des Imports, um den Import der Komponente in das nächstgelegene Modul zu überspringen.

Ich habe den folgenden Befehl verwendet und eine neue Komponente wurde erfolgreich unter einem Ordner erstellt.

 ng g c folderName/my_newComponent ---module ../app

2

Mein Projekt wurde mit Visual Studio Community 2017 erstellt und erstellt drei separate Module: app.browser.module, app.server.module und app.shared.module

Um meine Komponenten zu erstellen, habe ich die obigen Antworten überprüft und festgestellt, dass mein Modul app.shared.module ist.

Also renne ich:

ng g c componentName --module=app.shared.module

2

Wenn sich mehr als ein Modul im App-Ordner befindet, schlägt das Generieren einer Komponente mit dem folgenden Befehl fehl:

ng generate component New-Component-Name

Der Grund dafür ist, dass die eckige CLI mehrere Module erkennt und nicht weiß, in welchem ​​Modul die Komponente hinzugefügt werden soll. Sie müssen also explizit angeben, welche Modulkomponente hinzugefügt wird:

ng generate component New-Component-Name --module=ModuleName

1

Wenn Sie in einem bestimmten Modul erstellen, gehen Sie zu diesem Pfad und führen Sie ng gc Komponentenname aus

sonst erst Modul erstellen ng g Modul Modulname

cd arc / app / modulename Gehen Sie zum Pfad modulename und erstellen Sie die Komponente


0

versuchen Sie ng g Komponenten-Header - Modul-App, es ist Arbeit für mich


1
Arbeiten in Winkel 6. zog ich die Routen app.routing.module.tsdaher den Fehler
Lernen ...

0

Wenn Sie mehr als ein Modul haben, müssen Sie den Modulnamen angeben

 ng g c componentName --module=modulename.module 

0

Angular CLI: 8.3.1

Wenn Sie mehrere module.tsDateien in einem Modul haben, müssen Sie angeben, für welche Moduldatei Sie eine Komponente generieren.

ng g c modulefolder/componentname --module=modulename.module

Zum Beispiel habe ich einen freigegebenen Modulordner, in dem ich diesen habe shared.module.tsund material.module.tsmag

shared
  > shared.module.ts
  > material.module.ts

und ich möchte sidebarKomponente für generieren, shared.module.ts dann werde ich folgenden Befehl ausführen

ng g c shared/sidebar --module=shared.module

Wenn Sie die Komponente exportieren möchten, führen Sie den folgenden Befehl aus

ng g c shared/sidebar --module=shared.module --export

0

Angular CLI: 8.3.4 Node: 10.16.3 Angualr: 4.2.5

Ich habe den Befehl "dotnet new angle" verwendet , um das Projekt zu generieren, und es wurden 3 verschiedene Module im App-Ordner generiert (obwohl ein einfacher Test mit ng new project-name nur ein einziges Modul generiert.

Sehen Sie sich die Module in Ihrem Projekt an und entscheiden Sie, welches Modul Sie möchten. Geben Sie dann den Namen an

ng g c componentName --module=[name-of-your-module]

Weitere Informationen zu Modulen finden Sie hier: https://angular.io/guide/architecture-modules


0

In meinem Fall scheint ng nicht in meinem Umgebungspfad registriert zu sein. Ich habe den Befehl npm run verwendet, um die ng-Befehle auszuführen. Beachten Sie, dass Sie zum Übergeben von Argumenten ein Extra benötigen - gemäß der npm-Laufspezifikation.

Beispiel: npm run ng gc components / scheduling - --module = app

Oder: npm run ng gc components / scheduling - --skip-import


0

Ich hatte diese Warnung, als ich diese in der angular.jsonKonfiguration hatte:

"prefix": "app_ng"

Wenn geändert, "app"funktionierte alles einwandfrei.


0

Nur um eine weitere Information für jemanden wie mich hinzuzufügen, der nur eine einzige Anwendung hat.

Ich hatte meine Anwendung mit der Hauptanwendung app.module.ts eingerichtet und hatte das Routing mit dem Routingmodul in einem eigenen Ordner unter der Hauptanwendung. Ich ging durch und räumte auf, da ich ein paar andere Dinge hatte, die besser organisiert werden mussten. Eine Sache, die ich getan habe, war, die Datei routing.module.ts in den Stammordner zu verschieben. Da es die einzige Datei im Ordner war, dachte ich, dass es keinen eigenen Ordner benötigt.

Dies funktionierte zunächst einwandfrei, aber als ich das nächste Mal versuchte, eine neue Komponente zu generieren (einige Zeit später über die WebStorm-IDE), schlug dies mit dieser Nachricht fehl. Nachdem ich dies gelesen hatte, versuchte ich, das Routing-Modul wieder in einen separaten Ordner zu legen, und es funktionierte wieder.

Beachten Sie also die Warnung an andere, verschieben Sie das Routing-Modul nicht in Ihren Stammordner! Ich bin mir sicher, dass es auch andere Möglichkeiten gibt, damit umzugehen, aber ich bin damit zufrieden, dass ich es jetzt in einem eigenen Ordner habe und den IDE-Generator wie zuvor verwende.


0

Sie müssen den angegebenen Modulnamen wie angeben

ng g c your-component --module module-name

Wo module-namesoll das sein, das Sie mit neu erstellter Komponente aktualisieren möchten.


-1

Als Hack, unten Schritte, für mich gearbeitet.

1) Verschieben Sie * .module.ts-Dateien von src / app an einen Speicherort außerhalb des Projekts.

2) Führen Sie den Befehl aus, um eine Komponente zu erstellen [ng g c component-name]

3) Verschieben Sie die * .module.ts-Dateien zurück nach src / app /


Überprüfen Sie bei dieser Lösung, ob die Komponente auch im entsprechenden Modul registriert ist. Das Ausführen des Befehls mit der CLI sollte dies tun. Ich denke, der negative Punkt war auf dieses Problem zurückzuführen.
Homa Pourmohammadi
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.