त्रुटि: एक से अधिक मॉड्यूल मेल खाते हैं। घटक को निकटतम मॉड्यूल में आयात करने के लिए स्किप-इम्पोर्ट विकल्प का उपयोग करें


316

जब मैं कोणीय क्ली में एक घटक बनाने की कोशिश करता हूं, तो यह मुझे यह त्रुटि दिखा रहा है। मुझे इससे छुटकारा कैसे मिलेगा ?

त्रुटि: एक से अधिक मॉड्यूल मेल खाते हैं। घटक को निकटतम मॉड्यूल में आयात करने के लिए स्किप-इम्पोर्ट विकल्प का उपयोग करें।

मैं कोणीय cli संस्करण का उपयोग कर रहा हूँ: 1.4.1

जवाबों:


688

-मॉड्यूल पैरामीटर का उपयोग करके मॉड्यूल निर्दिष्ट करें। उदाहरण के लिए, यदि मुख्य मॉड्यूल app.module.ts है, तो इसे चलाएं:

ng g c new-component --module app

या यदि आप एक अन्य निर्देशिका में हैं तो

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

23
मेरे मामले में यह था ng g c admin/manageUsers ---module ../app
एलेक्सस 1024

मेरे मामले में मुझे यह सुनिश्चित करना था कि मैं इसे करते समय ऐप फ़ोल्डर में था
पेड़_आरे_गेट


53

यह तब से होता है जब पीढ़ी ने आपके घटक को एक मॉड्यूल से जोड़ने की कोशिश की, अर्थात इस लाइन को जोड़ने के लिए

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

लेकिन इसमें 2 मॉड्यूल पाए गए।

जैसा कि यहां कहा गया है , उन्होंने इसे एक ऐसी स्थिति में तय किया, जहां तक ​​रूट src / app फ़ोल्डर में आपके पास केवल 1 मॉड्यूल है, आप ठीक हैं, इसलिए बस सेकंडरी मॉड्यूल को उप-फ़ोल्डर में स्थानांतरित करें।

अन्यथा आपको उपयोग करना होगा --module


9
यह सबसे उपयोगी उत्तर लगता है, आपको हर समय मॉड्यूल को निर्दिष्ट करने से बचाता है, धन्यवाद।
अर्विन

हां। मेरे अतिरिक्त मॉड्यूल को एक modulesसबफ़ोल्डर में ले जाया गया , और अब सब अच्छा है।
क्रश करें

1
याद दिलाने के लिए धन्यवाद, आखिरकार मुझे दूसरा मॉड्यूल मिला: RoutingModule, और इसे उप-फ़ोल्डर में ले जाया गया
झेंग काई

36

यह मेरे लिए काम कर रहा है

ng g component component-name --skip-import

7
ध्यान देने वाली एक महत्वपूर्ण बात, यह है कि इस तरीके से स्वचालित रूप से इन डेटासेट को app.module.ts में आयात नहीं किया जाता है। तो यह मैन्युअल रूप से किया जाना है।
गेल

11

ज़िशा के जवाब के लिए बस एक छोटा सा अपडेट।

मेरी परियोजना में सभी मॉड्यूल "मॉड्यूल" नामक एक फ़ोल्डर में रखे गए थे और सभी घटकों को "घटक" फ़ोल्डर में "घटक" फ़ोल्डर में रखा गया है।

फ़ोल्डर संरचना

इसलिए एक विशिष्ट पथ के तहत एक घटक बनाने के लिए, मैंने निम्नलिखित सिंटैक्स का उपयोग किया:

एनजी जीसी कंपोनेंट्स_पैथ / कंपोनेंट_नाम - मोड्यूल मॉड्यूल_पैथ / मॉड्यूल_नाम

उदाहरण :

एनजी जीसी घटकों / लॉगिन - मोड मॉड्यूल / ऐप


1
मुझे पता नहीं है, लेकिन, अपने घटकों को अपने संबंधित मॉड्यूल में रखने के लिए एक "बेहतर 'डिजाइन अभ्यास नहीं है?
ओजोनुगा जुड ओचलिफु

8

कोणीय CLI: 6.0.8
नोड: 10.4.0
OS: linux x64
कोणीय: 6.0.4

यदि कोई सुविधा मॉड्यूल (जैसे manager.module.ts अंदर जैसे "/ प्रबंधक" उप-फ़ोल्डर) रूटिंग मॉड्यूल के साथ अलग-अलग NgModule (जैसे प्रबंधक- routing.module.ts ) त्रुटि संदेश में बाहरी होता है:

एक से अधिक मॉड्यूल मेल खाते हैं। घटक को निकटतम मॉड्यूल में आयात करने के लिए स्किप-इम्पोर्ट विकल्प का उपयोग करें।

दिखाई नहीं देता है और घटक ठीक से उत्पन्न होता है और manager.module.ts मॉड्यूल में जोड़ा जाता है ।

नामकरण सम्मेलन को रोकें ! रूटिंग मॉड्यूल का नाम " -रूटिंग " के साथ समाप्त होना चाहिए !

यदि रूटिंग मॉड्यूल को एक नाम दिया जाता है, जैसे कि प्रबंधक-रूटर.module.ts , सीएलआई त्रुटि संदेश के साथ शिकायत करेगा और आपको घटक आयात को स्वचालित रूप से जोड़ने के लिए -मॉड्यूल विकल्प प्रदान करने की उम्मीद करता है:

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

या

ng generate component some-name --skip-import

यदि आप मैन्युअल रूप से घटक के आयात को जोड़ना पसंद करते हैं


-चाल किया! मैं इसके lib-name.routing.module.tsबजाय था lib-name-routing.module.ts
मवरमंड

7

इस समस्या को हल करने के दो तरीके हैं।

1) छोड़ें (- कमांड में -स्काइप-इंपोर्ट का उपयोग करके) डिफॉल्ट इंपोर्ट करें और कंपोनेंट बनाएं और एक बार कंपोनेंट बनने के बाद इसे मैन्युअली इंपोर्ट करें जहां भी आप इसे इस्तेमाल करना चाहते हैं।

ng generate component my-component --skip-import

2) मॉड्यूल का नाम स्पष्ट रूप से प्रदान करें जहां आप इसे आयात करना चाहते हैं

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

4

जब ऐप या लिब में कई नेस्टेड मॉड्यूल होते हैं

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

कोणीय सीएलआई

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

एनआरडब्ल्यूएल एनएक्स एंगुलर सीएलआई

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

परिणाम

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

3

एक फ़ोल्डर के तहत एक नया घटक बनाने की कोशिश करते समय मुझे नीचे त्रुटि हो रही थी।

त्रुटि: एक से अधिक मॉड्यूल मेल खाते हैं। घटक को निकटतम मॉड्यूल में आयात करने के लिए स्किप-इम्पोर्ट विकल्प का उपयोग करें।

मैंने कमांड के नीचे उपयोग किया है और एक फ़ोल्डर के तहत नया घटक सफलतापूर्वक बनाया गया है।

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

2

मेरा प्रोजेक्ट विजुअल स्टूडियो कम्युनिटी 2017 का उपयोग करके बनाया गया था और यह 3 अलग-अलग मॉड्यूल बनाता है: app.browser.module, app.server.module और app.sared.module

अपने घटकों को बनाने के लिए मैंने उत्तर के ऊपर जाँच की और पाया कि मेरा मॉड्यूल app.sared.module है।

तो, मैं चलाता हूं:

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

2

जब एप्लिकेशन फ़ोल्डर के तहत एक से अधिक मॉड्यूल होते हैं, तो नीचे कमांड के साथ एक घटक उत्पन्न करना विफल हो जाएगा:

ng generate component New-Component-Name

कारण कोणीय सीएलआई कई मॉड्यूल का पता लगाता है, और घटक को जोड़ने के लिए किस मॉड्यूल में पता नहीं है। तो, आपको स्पष्ट रूप से उल्लेख करना होगा कि कौन सा मॉड्यूल घटक जोड़ा जाएगा:

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

1

यदि आप विशिष्ट मॉड्यूल बना रहे हैं, तो उस पथ पर जाएं और एनजी घटक नाम चलाएं

और मॉड्यूल बनाएं पहले एन मॉड्यूल मॉड्यूल मॉड्यूल नाम

cd arc / app / modulename modulename पथ पर जाएं और घटक बनाएं



0

जब आपके पास एक से अधिक मॉड्यूल हों, तो आपको मॉड्यूल नाम निर्दिष्ट करना होगा

 ng g c componentName --module=modulename.module 

0

कोणीय सीएलआई: 8.3.1

जब आपके पास module.tsएक मॉड्यूल के अंदर कई फाइलें होती हैं, तो आपको यह निर्दिष्ट करने की आवश्यकता होती है कि आप किस मॉड्यूल फ़ाइल के लिए घटक बना रहे हैं।

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

उदाहरण के लिए मैंने मॉड्यूल फ़ोल्डर साझा किया है जिसके अंदर मेरे पास shared.module.tsऔर material.module.tsयह पसंद है

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

और मैं उसके sidebarलिए घटक उत्पन्न करना चाहता हूं , shared.module.tsतो मैं निम्नलिखित कमांड चलाऊंगा

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

यदि आप घटक को निर्यात करना चाहते हैं तो निम्न कमांड चलाएं

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

0

कोणीय सीएलआई: 8.3.4 नोड: 10.16.3 आंग्ल: 4.2.5

मैंने प्रोजेक्ट बनाने के लिए "डॉटनेट न्यू कोणीय" कमांड का उपयोग किया, और इसने ऐप फ़ोल्डर में 3 अलग-अलग मॉड्यूल उत्पन्न किए हैं (हालाँकि नए प्रोजेक्ट-एनजी के साथ एक साधारण परीक्षण सिर्फ एक मॉड्यूल उत्पन्न करता है।

अपनी परियोजना में मॉड्यूल देखें और जो आप चाहते हैं मॉड्यूल तय करें - फिर नाम निर्दिष्ट करें

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

आप यहाँ मॉड्यूल के बारे में अधिक पढ़ सकते हैं: https://angular.io/guide/ RGBecture-modules


0

मेरे मामले में, ऐसा लगता है कि एनजी मेरे पर्यावरण पथ में पंजीकृत नहीं है। मैं एनपी कमांड चलाने के लिए एनपीएम कमांड का उपयोग कर रहा हूं। तर्कों को पारित करने के लिए जागरूक रहें, आपको npm रन विनिर्देश के अनुसार एक अतिरिक्त की आवश्यकता है।

उदाहरण: npm रन एनजी जीसी घटक / शेड्यूलिंग - मोड्यूल = ऐप

या: npm रन एनसी जीसी घटकों / शेड्यूलिंग - --स्काइप-आयात


0

मुझे यह चेतावनी तब मिली जब यह angular.jsonविन्यास में था :

"prefix": "app_ng"

जब "app"सभी के लिए बदल पूरी तरह से ठीक काम किया।


0

बस मेरे जैसे किसी के लिए जानकारी का एक और टुकड़ा जोड़ने के लिए जो उसके साथ होता है बस एक ही आवेदन होता है।

मैंने अपना एप्लिकेशन मुख्य app.module.ts के साथ सेट किया था और मैंने मुख्य एप्लिकेशन के तहत स्वयं के फ़ोल्डर में रूटिंग मॉड्यूल के साथ रूटिंग की थी। जब मैंने कुछ और चीजें कीं, तब मुझे कुछ 'सफाई' करनी पड़ी और मुझे बेहतर तरीके से संगठित होने की जरूरत थी। एक चीज जो मैंने किया था वह रूट फ़ोल्डर में रूटिंगमॉडल। चूँकि यह फ़ोल्डर की एकमात्र फ़ाइल थी, मुझे लगा कि इसे अपने स्वयं के फ़ोल्डर की आवश्यकता नहीं है।

इसने पहली बार ठीक काम किया लेकिन अगली बार जब मैंने एक नया घटक उत्पन्न करने की कोशिश की (कुछ समय बाद, वेबस्टॉर्म आईडीई के माध्यम से) यह इस संदेश के साथ विफल हो गया। इसके माध्यम से पढ़ने के बाद मैंने रूटिंग मॉड्यूल को एक अलग फ़ोल्डर में वापस डालने की कोशिश की और यह फिर से काम कर रहा है।

दूसरों के लिए चेतावनी पर ध्यान दें, रूटिंग मॉड्यूल को अपने रूट फ़ोल्डर में न ले जाएं! मुझे यकीन है कि इससे निपटने के अन्य तरीके भी हैं, लेकिन मैं इसके लिए खुद के फ़ोल्डर में अभी के लिए खुश हूं और आईडीई जनरेटर का उपयोग कर रहा हूं जैसे मैं पहले था।


0

आपको निर्दिष्ट मॉड्यूल नाम देना होगा

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

यह कहां module-nameहोना चाहिए कि आप नए बनाए गए घटक के साथ अपडेट करना चाहते हैं।


-1

एक हैक के रूप में, चरणों के नीचे, मेरे लिए काम किया।

1) परियोजना से बाहर किसी स्थान पर src / app से * .module.ts फ़ाइलों को ले जाएँ।

2) घटक बनाने के लिए निष्पादित कमांड [ng g c component-name]

3) src / app / के लिए * .module.ts फ़ाइलों को वापस ले जाएं


इस समाधान के लिए, जांचें कि क्या घटक प्रासंगिक मॉड्यूल में पंजीकृत है। क्ली का उपयोग करके कमांड चलाना चाहिए। मुझे लगता है कि इस मुद्दे के कारण नकारात्मक बिंदु रहा है।
होमा पूर्णममादि
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.