Kesalahan: Lebih dari satu modul cocok. Gunakan opsi lewati-impor untuk melewati impor komponen ke modul terdekat

317

Ketika saya mencoba membuat komponen di cli sudut, itu menunjukkan kepada saya kesalahan ini. Bagaimana saya menyingkirkannya?

Kesalahan: Lebih dari satu modul cocok. Gunakan opsi lewati-impor untuk melewati impor komponen ke modul terdekat.

Saya menggunakan versi cli sudut: 1.4.1

Ish Man
sumber

Jawaban:

691

Tentukan modul menggunakan parameter --mule. Misalnya, jika modul utama adalah app.module.ts, jalankan ini:

ng g c new-component --module app

Atau jika Anda berada di direktori lain, maka

ng g c component-name --module ../
zisha
sumber
23
dalam kasus saya itu ng g c admin/manageUsers ---module ../app
Alexus1024
dalam kasus saya, saya harus memastikan bahwa saya berada di folder aplikasi ketika melakukannya
trees_are_great
80

Coba ini: Ini bekerja untuk saya

ng generate component componentName --module=app.module

Shurvir Mori
sumber
1
Bekerja untukku. Terima kasih. [Angular CLI: 1.7.4 // Node: 9.8.0 // OS: linux x64 // Angular: 5.2.9]
NajlaBioinfo
53

Ini disebabkan karena generasi mencoba menambahkan komponen Anda ke modul, yaitu menambahkan baris ini

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

tetapi ditemukan 2 modul.

Seperti yang dinyatakan di sini , mereka memperbaikinya pada situasi di mana selama di root src / app folder Anda hanya memiliki 1 modul, Anda baik-baik saja, jadi hanya memindahkan modul sekunder ke sub-folder.

Kalau tidak, Anda harus menggunakan --module

bresleveloper
sumber
9
Ini sepertinya jawaban yang paling berguna, menyelamatkan Anda dari keharusan menentukan modul setiap saat, terima kasih.
Arwin
Ya. Memindahkan modul tambahan saya ke modulessubfolder, dan semuanya baik-baik saja sekarang.
naksir
1
Terima kasih sudah mengingatkan, akhirnya saya menemukan modul kedua: RoutingModule, dan memindahkannya ke sub-folder
Zheng Kai
36

Ini bekerja untuk saya

ng g component component-name --skip-import
Valera Khomchenko
sumber
7
satu hal penting yang perlu diperhatikan, adalah bahwa metode ini tidak secara otomatis mengimpor perangkat ini di app.module.ts. Jadi ini harus dilakukan secara manual.
Gel
11

Hanya pembaruan kecil untuk jawaban Zisha.

Dalam proyek saya semua modul ditempatkan di folder yang disebut "modul" dan semua komponen ditempatkan di folder "komponen" di bawah "src / app"

struktur folder

jadi untuk membuat komponen di bawah jalur tertentu, saya menggunakan sintaks berikut:

ng gc components_path / component_name --module modules_path / module_name

contoh:

ng gc components / login --module modules / app

Saleem Khan
sumber
1
Saya tidak tahu, tetapi, bukankah praktik desain yang lebih baik untuk menempatkan komponen Anda dalam modul yang terkait?
Ojonugwa Jude Ochalifu
8

CLI Angular: 6.0.8
Node: 10.4.0
OS: linux x64
Angular: 6.0.4

Dalam hal ada modul fitur (misalnya manager.module.ts dalam misalnya "/ manager" sub-folder) dengan modul routing yang externalized ke NgModule terpisah (misalnya manajer-routing.module.ts ) pesan kesalahan:

Lebih dari satu modul cocok. Gunakan opsi lewati-impor untuk melewati impor komponen ke modul terdekat.

tidak muncul dan komponen dihasilkan dan ditambahkan dengan benar ke modul manager.module.ts .

TETAPI HATI - HATI penamaan! nama modul routing harus diakhiri dengan " -routing "!

Jika modul perutean diberi nama seperti mis. Manager-router.module.ts , CLI akan mengeluh dengan pesan kesalahan dan mengharapkan Anda untuk memberikan opsi --module untuk secara otomatis menambahkan impor komponen:

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

atau

ng generate component some-name --skip-import

jika Anda lebih suka menambahkan impor komponen secara manual

pchemeque
sumber
Itu -berhasil! Saya lib-name.routing.module.tsbukannya lib-name-routing.module.ts.
mvermand
7

Ada dua cara untuk mengatasi masalah ini.

1) Lewati (menggunakan --skip-import in command) impor default dan buat komponen dan begitu komponen dibuat impor secara manual di mana pun Anda ingin menggunakannya.

ng generate component my-component --skip-import

2) Berikan nama modul secara eksplisit di tempat Anda ingin diimpor

ng generate  component  my-component --module=my-module.module
UniCoder
sumber
4

Ketika aplikasi atau lib memiliki beberapa modul bersarang

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

CLI sudut

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

Hasil

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

Saya mendapatkan kesalahan di bawah ini ketika mencoba membuat komponen baru di bawah folder.

kesalahan: Lebih dari satu modul cocok. Gunakan opsi lewati-impor untuk melewati impor komponen ke modul terdekat.

Saya telah menggunakan perintah di bawah ini dan komponen baru berhasil dibuat di bawah folder.

 ng g c folderName/my_newComponent ---module ../app
Shakeer Hussain
sumber
2

Proyek saya dibuat menggunakan Visual Studio Community 2017 dan menciptakan 3 modul terpisah: app.browser.module, app.server.module dan app.share.module

Untuk membuat komponen, saya memeriksa jawaban di atas dan menemukan modul saya menjadi app.share.module.

Jadi, saya jalankan:

ng g c componentName --module=app.shared.module
Matheus Maximo
sumber
2

Ketika ada lebih dari satu modul di bawah folder aplikasi, menghasilkan komponen dengan perintah di bawah ini akan gagal:

ng generate component New-Component-Name

Alasannya adalah sudut CLI mendeteksi beberapa modul, dan tidak tahu di mana modul untuk menambahkan komponen. Jadi, Anda perlu menyebutkan secara eksplisit komponen modul mana yang akan ditambahkan:

ng generate component New-Component-Name --module=ModuleName
Palash Roy
sumber
1

jika Anda membuat dalam modul tertentu pergi ke jalan itu dan jalankan ng gc componentname

lain buat modul pertama modul modul

cd arc / app / modulename pergi ke lintasan modulename dan buat komponen

rohithd
sumber
0

coba ng g tajuk komponen --module app berfungsi untuk saya

Istvan Dembrovszky
sumber
1
karya di sudut 6. Saya pindah rute ke app.routing.module.tskarenanya kesalahan
pembelajaran ...
0

ketika Anda memiliki lebih dari satu modul, Anda perlu menentukan nama modul

 ng g c componentName --module=modulename.module 
priya_21
sumber
0

CLI sudut: 8.3.1

ketika Anda memiliki banyak module.tsfile di dalam modul, Anda perlu menentukan file modul mana yang Anda hasilkan komponen.

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

untuk contoh saya telah berbagi folder modul di dalamnya saya punya shared.module.tsdan material.module.tsseperti ini

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

dan saya ingin menghasilkan sidebarkomponen untuk shared.module.ts kemudian saya akan menjalankan perintah berikut

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

jika Anda ingin mengekspor komponen kemudian jalankan perintah berikut

ng g c shared/sidebar --module=shared.module --export
Zuber
sumber
0

CLI Angular: 8.3.4 Node: 10.16.3 Angualr: 4.2.5

Saya menggunakan perintah "dotnet new angular" untuk menghasilkan proyek, dan telah menghasilkan 3 modul yang berbeda di folder aplikasi (Meskipun tes sederhana dengan nama proyek baru hanya menghasilkan satu modul.

lihat modul dalam proyek Anda dan putuskan modul yang Anda inginkan - kemudian tentukan namanya

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

Anda dapat membaca lebih lanjut tentang modul di sini: https://angular.io/guide/architecture-modules

Homa Pourmohammadi
sumber
0

Dalam kasus saya, sepertinya ng tidak terdaftar ke jalur lingkungan saya. Saya telah menggunakan perintah jalankan npm untuk menjalankan perintah ng. Berhati-hatilah untuk meloloskan argumen, Anda memerlukan ekstra - sesuai spesifikasi npm run.

Contoh: npm run ng gc komponen / penjadwalan - --module = app

Atau: npm menjalankan komponen gc / penjadwalan - --skip-import

Scott Moniz
sumber
0

Saya mendapat peringatan ini saat angular.jsonmengonfigurasi ini:

"prefix": "app_ng"

Ketika diubah ke "app"semua bekerja dengan baik.

Valera Tumash
sumber
0

Hanya untuk menambahkan informasi lain untuk ini bagi orang seperti saya yang kebetulan hanya memiliki satu aplikasi.

Saya mengatur aplikasi saya dengan app.module.ts utama dan saya melakukan routing dengan modul routing di foldernya sendiri di bawah aplikasi utama. Saya melewati dan melakukan beberapa 'pembersihan' karena saya memiliki beberapa hal lain yang perlu diorganisir lebih baik. Satu hal yang saya lakukan adalah memindahkan routing.module.ts ke folder root; karena itu adalah satu-satunya file dalam folder yang saya pikir tidak perlu folder itu sendiri.

Ini bekerja dengan baik pada awalnya tetapi kali berikutnya saya mencoba untuk menghasilkan komponen baru (beberapa waktu kemudian, melalui IDE WebStorm) gagal dengan pesan ini. Setelah membaca ini saya mencoba meletakkan modul routing kembali ke folder terpisah dan berfungsi lagi.

Jadi perhatikan peringatan untuk orang lain, jangan pindahkan modul perutean ke folder root Anda! Saya yakin ada cara lain untuk menangani ini juga, tetapi saya senang dengan itu di folder sendiri untuk saat ini dan menggunakan generator IDE seperti sebelumnya.

sfaust
sumber
0

Anda harus memberikan nama modul yang ditentukan seperti

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

Di mana module-nameAnda ingin memperbarui dengan komponen yang baru dibuat.

Ms.KV
sumber
-1

Sebagai peretasan, langkah-langkah di bawah ini, berhasil untuk saya.

1) Pindahkan * .module.ts file dari src / app ke lokasi di luar proyek.

2) Jalankan perintah untuk membuat komponen [ng g c component-name]

3) Pindahkan kembali file * .module.ts ke src / app /

Anoop Mayampilly Muraleedharan
sumber
Untuk solusi ini, periksa apakah komponen juga terdaftar dalam modul yang relevan. Menjalankan perintah menggunakan cli harus melakukannya. Saya kira poin negatifnya adalah karena masalah ini.
Homa Pourmohammadi