Hata: Birden fazla modül eşleşiyor. Bileşeni en yakın modüle almayı atlamak için atla-içe aktar seçeneğini kullanın


316

Açısal uçta bir bileşen oluşturmaya çalıştığımda, bana bu hatayı gösteriyor. Ondan nasıl kurtulurum ?

Hata: Birden fazla modül eşleşiyor. Bileşeni en yakın modüle almayı atlamak için atla-içe aktar seçeneğini kullanın.

Açısal cli sürümünü kullanıyorum: 1.4.1

Yanıtlar:


689

--Module parametresini kullanarak modülü belirtin. Örneğin, ana modül app.module.ts ise, şunu çalıştırın:

ng g c new-component --module app

Veya başka bir dizindeyseniz

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

23
benim durumumda oldu ng g c admin/manageUsers ---module ../app
Alexus1024

benim durumumda ben bunu yaparken uygulama klasöründe olduğundan emin olmak zorunda
trees_are_great

80

Bunu dene: Benim için çalışıyor

ng generate component componentName --module=app.module


1
Benim için çalışıyor. Teşekkürler. [Açısal CLI: 1.7.4 // Düğüm: 9.8.0 // İşletim Sistemi: linux x64 // Açısal: 5.2.9]
NajlaBioinfo

53

Bunun nedeni, neslin bileşeninizi bir modüle eklemeye çalışması, yani bu satırı eklemeye çalışmasıdır.

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

ancak 2 modül buldu.

Belirtildiği gibi burada , onlar sürece sadece 1 modül, sen ince olması klasör kök src / app, bu yüzden sadece bir duruma düzelttim bir alt klasöre ikinciller modüllerini taşıyın.

Aksi takdirde kullanmak zorundasınız --module


9
Bu her zaman modülü belirtmek zorunda kalmadan kurtaracağınız en kullanışlı cevap gibi görünüyor, teşekkürler.
Arwin

Evet. Ek modüllerimi bir modulesalt klasöre taşıdı ve şimdi her şey yolunda.
ezmek

1
Hatırlattığınız için teşekkürler, sonunda ikinci modülü buldum: RoutingModule ve alt klasöre taşıdım
Zheng Kai

36

Benim için çalışıyor

ng g component component-name --skip-import

7
dikkat edilmesi gereken önemli bir nokta, bu yöntemin bu bileşenleri otomatik olarak app.module.ts dosyasına aktarmamasıdır. Yani bu manuel olarak yapılmalıdır.
Jel

11

Zisha'nın cevabı için sadece küçük bir güncelleme.

Projemde tüm modüller "modüller" adlı bir klasöre yerleştirildi ve tüm bileşenler "src / app" altındaki "bileşenler" klasörüne yerleştirildi

klasör yapısı

belirli bir yol altında bir bileşen oluşturmak için aşağıdaki sözdizimini kullandım:

gc components_path / bileşen_adı - modül modülleri_yolu / modül_adı

misal :

ng gc bileşenleri / giriş - modül modülleri / uygulama


1
Bilmiyorum, ancak bileşenlerinizi ilgili modüllerine yerleştirmek için "daha iyi" bir tasarım uygulaması değil mi?
Ojonugwa Jude Ochalifu

8

Açısal CLI: 6.0.8
Düğüm: 10.4.0
İşletim Sistemi: linux x64
Açısal: 6.0.4

Yönlendirme modülü ayrı NgModule'ye (örn. Manager- routing.module.ts) harici olarak yerleştirilmiş bir özellik modülü (örn. "/ Manager" alt klasörü içinde manager.module.ts ) olması durumunda hata mesajı:

Birden fazla modül eşleşiyor. Bileşeni en yakın modüle almayı atlamak için atla-içe aktar seçeneğini kullanın.

görüntülenmez ve bileşen düzgün bir şekilde oluşturulur ve manager.module.ts modülüne eklenir .

AMA adlandırma kuralını DİKKATLİ OLUN ! yönlendirme modülünün adı "yönlendirme" ile bitmelidir !

Yönlendirme modülüne örneğin manager-router.module.ts gibi bir ad verilirse , CLI hata mesajından şikayet eder ve bileşen içe aktarımını otomatik olarak eklemek için --module seçeneği sağlamanızı bekler:

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

veya

ng generate component some-name --skip-import

bileşenin içe aktarılmasını manuel olarak eklemeyi tercih ederseniz


-Hile yaptı! Bunun lib-name.routing.module.tsyerine vardı lib-name-routing.module.ts.
mvermand

7

Bu sorunu çözmenin iki yolu vardır.

1) Atla (komutta --skip-import komutunu kullanarak) varsayılan içe aktarma ve oluşturma bileşeni ve bileşen oluşturulduktan sonra kullanmak istediğiniz yere manuel olarak aktarın.

ng generate component my-component --skip-import

2) Modül adını açıkça alınmasını istediğiniz yere sağlayın

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

4

Uygulama veya lib'de birden fazla iç içe modül olduğunda

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

Açısal CLI

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

NRWL NX Açısal CLI

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

Sonuç

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

3

Bir klasör altında yeni bir bileşen oluşturmaya çalışırken hata alıyordum.

hata: Birden fazla modül eşleşiyor. Bileşeni en yakın modüle almayı atlamak için atla-içe aktar seçeneğini kullanın.

Aşağıdaki komutu kullandım ve yeni bileşen bir klasör altında başarıyla oluşturuldu.

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

2

Projem Visual Studio Community 2017 kullanılarak oluşturuldu ve 3 ayrı modül oluşturuyor: app.browser.module, app.server.module ve app.shared.module

Bileşenlerimi oluşturmak için yukarıdaki cevapları kontrol ettim ve modülümü app.shared.module olarak buldum.

Ben de koşuyorum:

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

2

Uygulama klasörü altında birden fazla modül olduğunda, aşağıdaki komutla bir bileşen oluşturmak başarısız olur:

ng generate component New-Component-Name

Nedeni açısal CLI'nın birden fazla modülü tespit etmesidir ve hangi modülün bileşeni ekleyeceğini bilmez. Bu nedenle, hangi modül bileşeninin ekleneceğini açıkça belirtmeniz gerekir:

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

1

belirli bir modülde oluşturuyorsanız o yola gidin ve gc bileşen adını çalıştırın

aksi takdirde modül oluşturmak ng ng modül adı

cd arc / app / modulename modül adı yoluna gidin ve bileşeni oluşturun


0

bileşen başlığı denemek - modül uygulaması benim için çalışıyor


1
açısal 6 çalışır. Bu app.routing.module.tsnedenle hata
...

0

birden fazla modülünüz olduğunda, modül adını belirtmeniz gerekir

 ng g c componentName --module=modulename.module 

0

Açısal CLI: 8.3.1

module.tsbir modülün içinde birden fazla dosyanız varsa, hangi modül dosyası için bileşen oluşturduğunuzu belirtmeniz gerekir.

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

örneğin ben içindeki shared.module.tsve material.module.tsbu gibi paylaşılan modül klasörü var

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

ve ben sidebarbileşen oluşturmak istiyorum shared.module.ts sonra ben aşağıdaki komutu çalıştıracağım

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

bileşeni dışa aktarmak istiyorsanız aşağıdaki komutu çalıştırın

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

0

Açısal CLI: 8.3.4 Düğüm: 10.16.3 Angualr: 4.2.5

Kullandığım "dotnet yeni açısal" projesini oluşturmak için komut ve basit bir yöntem olmasına karşın (app klasöründe 3 farklı modülleri üretti yeni proje adını ng sadece tek bir modül oluşturur.

projenizdeki modülleri görün ve istediğiniz modüle karar verin - ardından adı belirtin

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

Modüller hakkında daha fazla bilgiyi buradan edinebilirsiniz: https://angular.io/guide/architecture-modules


0

Benim durumumda, çevre yoluma kayıtlı değil gibi görünüyor. Ng komutlarını çalıştırmak için npm run komutunu kullanıyorum. Npm çalıştırma spesifikasyonuna göre ekstra ihtiyacınız olan argümanları aktarabileceğinizi unutmayın.

Örnek: npm çalışma ng gc bileşenleri / çizelgeleme - --module = app

Veya: npm çalışma ng gc bileşenleri / çizelgeleme - - atlama-alma


0

Ne zaman bu angular.jsonyapılandırma vardı bu uyarı vardı :

"prefix": "app_ng"

"app"Tüm değiştirildi zaman gayet iyi çalıştı.


0

Sadece benim gibi herkes için bu konuda başka bir bilgi eklemek için sadece tek bir uygulama var.

Uygulamamı ana app.module.ts ile ayarladım ve yönlendirme modülü ile ana uygulamanın altındaki kendi klasöründe yönlendirme yaptım. Ben daha iyi organize edilmesi gereken birkaç şey vardı çünkü geçti ve bazı 'temizlik' yaptı. Yaptığım bir şey, routing.module.ts dosyasını kök klasöre taşımaktı; klasördeki tek dosya olduğu için kendi klasörüne ihtiyacı olmadığını düşündüm.

Bu ilk başta iyi çalıştı ama bir dahaki sefere yeni bir bileşen (bir süre sonra WebStorm IDE aracılığıyla) oluşturmaya çalıştım bu mesajla başarısız oldu. Bunu okuduktan sonra yönlendirme modülünü ayrı bir klasöre geri koymayı denedim ve tekrar çalıştı.

Bu nedenle, diğerlerine karşı uyarı almayı unutmayın, yönlendirme modülünü kök klasörünüze taşımayın! Ben de bununla başa çıkmak için başka yollar vardır eminim ama şimdilik kendi klasöründe ve daha önce olduğu gibi IDE jeneratör kullanarak memnunum.


0

Aşağıdaki gibi modül adını belirtmelisiniz

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

module-nameYeni oluşturulan bileşenle nerede güncellemek istiyorsunuz?


-1

Bir hack olarak, adımların altında, benim için çalıştı.

1) * .module.ts dosyalarını src / app uygulamasından projenin dışına taşıyın.

2) bileşen oluşturmak için komut yürütmek [ng g c component-name]

3) * .module.ts dosyalarını src / app / dizinine geri taşıyın


Bu çözüm için, bileşenin ilgili modüle de kayıtlı olup olmadığını kontrol edin. Klibi kullanarak komutu çalıştırmak gerekir. Sanırım olumsuz nokta bu konu yüzünden.
Homa Pourmohammadi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.