ত্রুটি: একাধিক মডিউল মিলছে। নিকটতম মডিউলে উপাদানটি আমদানি করতে এড়াতে স্কিপ-আমদানি বিকল্পটি ব্যবহার করুন


316

যখন আমি কৌণিক ক্লাইমে একটি উপাদান তৈরি করার চেষ্টা করি, এটি আমাকে এই ত্রুটিটি দেখায়। কিভাবে আমি তা পরিত্রাণ পেতে পারি ?

ত্রুটি: একাধিক মডিউল মিলছে। নিকটতম মডিউলে উপাদানটি আমদানি করতে এড়াতে স্কিপ-আমদানি বিকল্পটি ব্যবহার করুন।

আমি কৌণিক ক্লাইপ সংস্করণ ব্যবহার করছি: 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
Alexus1024

আমার ক্ষেত্রে আমাকে নিশ্চিত করতে হয়েছিল যে এটি করার সময় আমি অ্যাপ ফোল্ডারে ছিলাম
গাছ_রে_গ্রেট

79

এটি চেষ্টা করুন: এটি আমার পক্ষে কাজ করছে

ng generate component componentName --module=app.module


1
আমার জন্য কাজ কর. ধন্যবাদ. [কৌণিক সিএলআই: 1.7.4 // নোড: 9.8.0 // ওএস: লিনাক্স x64 // কৌণিক: 5.2.9]
নাজলাবিওইনফো

53

প্রজন্ম আপনার উপাদানটিকে কোনও মডিউলে যুক্ত করার চেষ্টা করেছিল, অর্থাৎ এই লাইনটি যুক্ত করার পরে এটি ঘটেছে

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

তবে এটি 2 টি মডিউল পেয়েছে।

এখানে যেমন বলা হয়েছে , তারা এটিকে এমন পরিস্থিতিতে স্থির করেছে যেখানে রুট এসসিআর / অ্যাপ্লিকেশন ফোল্ডারে যতক্ষণ না আপনার কেবলমাত্র 1 টি মডিউল থাকে, আপনি ঠিক আছেন, সুতরাং সেকেন্ডারি মডিউলগুলি একটি সাব-ফোল্ডারে সরিয়ে নিন।

অন্যথায় আপনি ব্যবহার করতে হবে --module


9
এটি আপনাকে সবচেয়ে দরকারী উত্তর বলে মনে হচ্ছে, আপনাকে মডিউলটি সর্বদা নির্দিষ্ট করা থেকে বাঁচায়, ধন্যবাদ।
অরভিন

হাঁ। আমার অতিরিক্ত মডিউলগুলি একটি modulesসাবফোল্ডারে সরানো হয়েছে এবং এখন সব ভাল।
পিষ্ট করুন

1
মনে করিয়ে দেওয়ার জন্য ধন্যবাদ, অবশেষে আমি দ্বিতীয় মডিউলটি পেয়েছি: রাউটিংডমডুল, এবং এটিকে সাব-ফোল্ডারে সরানো হয়েছে
ঝেং কাই

36

এটা আমার জন্য কাজ করছে

ng g component component-name --skip-import

7
একটি গুরুত্বপূর্ণ বিষয় লক্ষণীয়, এই পদ্ধতিটি এই অ্যাপ্লিকেশনগুলিতে স্বয়ংক্রিয়ভাবে এই সংজ্ঞাগুলি আমদানি করে না mod সুতরাং এটি ম্যানুয়ালি করতে হবে।
জেল

11

জিশার উত্তরের একটি সামান্য আপডেট।

আমার প্রকল্পে সমস্ত মডিউল "মডিউল" নামে একটি ফোল্ডারে স্থাপন করা হয়েছিল এবং সমস্ত উপাদানগুলি "src / app" এর অধীনে "উপাদানগুলি" ফোল্ডারে স্থাপন করা হয়েছিল

ফোল্ডার কাঠামো

সুতরাং একটি নির্দিষ্ট পাথের অধীনে একটি উপাদান তৈরি করতে, আমি নিম্নলিখিত সিনট্যাক্সটি ব্যবহার করেছি:

এনজি জিসি উপাদান_পথ / উপাদান_নাম - মডিউল মডিউল_পথ / মডিউল_নাম

উদাহরণ:

এনজি জিসি উপাদান / লগইন - মডিউল মডিউল / অ্যাপ্লিকেশন


1
আমি জানি না, তবে, আপনার উপাদানগুলিকে তাদের সম্পর্কিত মডিউলগুলিতে রাখার জন্য কোনও "আরও ভাল" ডিজাইনের অনুশীলন নয়?
ওজনগওয়া জুড ওচালিফু

8

কৌণিক সিএলআই: 6.0.8
নোড: 10.4.0
ওএস: লিনাক্স x64
কৌণিক: 6.0.4

যদি একটি বৈশিষ্ট্য মডিউল আছে (যেমন manager.module.ts যেমন "/ ম্যানেজার" সাব-ফোল্ডারে অভ্যন্তরীণ) রাউটিং মডিউল পৃথক NgModule মধ্যে বাহ্যিক (যেমন সঙ্গে ম্যানেজার-routing.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
mvermand

7

এই সমস্যাটি সমাধান করার দুটি উপায় রয়েছে।

1) এড়িয়ে যান (কমান্ডে -স্কিপ-ইম্পোর্ট ব্যবহার করে) ডিফল্ট আমদানি করুন এবং উপাদান তৈরি করুন এবং একবার উপাদান তৈরি হয়ে গেলে আপনি যেখানেই এটি ব্যবহার করতে চান তা নিজেই আমদানি করুন।

ng generate component my-component --skip-import

২) মডিউলটির নামটি স্পষ্টভাবে সরবরাহ করুন যেখানে আপনি এটি আমদানি করতে চান

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.shared.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

আপনি যদি নির্দিষ্ট মডিউলে তৈরি করছেন তবে সেই পথে যান এবং এনজিসি গিসি উপাদানটি চালান

অন্যথায় মডিউল প্রথম এনজি জি মডিউল মডিউলনাম তৈরি করুন

সিডি আরক / অ্যাপ / মডিউলনাম মডিউলনাম পথে যান এবং উপাদানটি তৈরি করুন



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/architecture- মডুলস


0

আমার ক্ষেত্রে, মনে হয় এনজি আমার পরিবেশের পথে নিবন্ধভুক্ত নয়। আমি এনজিএম কমান্ডগুলি চালনার জন্য এনপিএম রান কমান্ড ব্যবহার করছি। আপনার অতিরিক্ত প্রয়োজন যুক্তিগুলি পাস করার জন্য সচেতন হন - এনপিএম রান স্পেসিফিকেশন অনুসারে।

উদাহরণ: এনপিএম রান এনজিসি উপাদান / সময়সূচি চালানো - - মডুল = অ্যাপ্লিকেশন

বা: npm রান NG জিসি উপাদান / সিডিউলিং - --skip-আমদানি


0

angular.jsonকনফিগারেশনে যখন ছিল তখন আমার এই সতর্কতা ছিল :

"prefix": "app_ng"

যখন "app"সব পরিবর্তিত পুরোপুরি সূক্ষ্ম কাজ।


0

আমার মতো কারও জন্য এই তথ্যের আরও একটি টুকরো যুক্ত করার জন্য কেবল যে কোনও একক প্রয়োগ রয়েছে।

আমি আমার অ্যাপ্লিকেশনটি মূল অ্যাপ্লিকেশন.মডিউল.টস এর সাথে সেট আপ করেছিলাম এবং প্রধান অ্যাপ্লিকেশনটির অধীনে এর নিজস্ব ফোল্ডারে আমার রাউটিং মডিউলের সাথে রাউটিং ছিল। আমি আরও কয়েকটি জিনিস পরিষ্কার করেছিলাম যেহেতু আমার আরও কয়েকটি জিনিস আরও ভালভাবে সাজানোর দরকার ছিল। একটি জিনিস আমি করেছি রুটিং.মডিউল.টগুলি মূল ফোল্ডারে সরানো; যেহেতু আমি ফোল্ডারটির একমাত্র ফাইল ছিলাম এটির নিজের ফোল্ডারটির দরকার নেই।

এটি প্রথমে ভাল কাজ করেছে কিন্তু পরের বার আমি একটি নতুন উপাদান তৈরি করার চেষ্টা করেছি (কিছু সময় পরে, ওয়েবস্টর্ম আইডিইয়ের মাধ্যমে) এটি এই বার্তাটির সাথে ব্যর্থ হয়েছিল। এটি পড়ার পরে আমি রাউটিং মডিউলটি আলাদা ফোল্ডারে রেখে দেওয়ার চেষ্টা করেছি এবং এটি আবার কাজ করেছে।

সুতরাং অন্যদের সতর্কতার নোট, আপনার রুট ফোল্ডারে রাউটিং মডিউলটি সরাবেন না! আমি নিশ্চিত যে এটির মোকাবিলার অন্যান্য উপায়ও রয়েছে তবে আমি এটির জন্য এখনকার নিজস্ব ফোল্ডারে এবং আইডিই জেনারেটরটি আমার আগের মতো ব্যবহার করে খুশি।


0

আপনাকে নির্দিষ্ট মডিউলটির মতো নাম দিতে হবে

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

module-nameআপনি নতুন তৈরি উপাদান দিয়ে আপডেট করতে চান তা কোথায় হওয়া উচিত।


-1

পদক্ষেপের নিচে হ্যাক হিসাবে আমার জন্য কাজ করেছে।

1) এসআরসি / অ্যাপ্লিকেশন থেকে * .module.ts ফাইলগুলি প্রজেক্টের বাইরে কোনও স্থানে নিয়ে যান।

2) উপাদান তৈরি করতে কমান্ড কার্যকর করুন [ng g c component-name]

3) * .module.ts ফাইলগুলি এসআরসি / অ্যাপ / এ ফিরে যান


এই সমাধানের জন্য, উপাদানটি প্রাসঙ্গিক মডিউলটিতেও নিবন্ধিত আছে কিনা তা পরীক্ষা করে দেখুন। ক্লিপ ব্যবহার করে কমান্ড চালানো উচিত should আমার ধারণা theণাত্মক বিষয়টি এই ইস্যুটির কারণে হয়েছে।
হোমা পৌরমোহমদি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.