Lỗi: Nhiều hơn một mô-đun khớp. Sử dụng tùy chọn bỏ qua để bỏ qua việc nhập thành phần vào mô-đun gần nhất


316

Khi tôi cố gắng tạo một thành phần trong cli góc, nó sẽ hiển thị cho tôi lỗi này. Làm sao để tôi bỏ nó đi ?

Lỗi: Nhiều hơn một mô-đun khớp. Sử dụng tùy chọn bỏ qua để bỏ qua việc nhập thành phần vào mô-đun gần nhất.

Tôi đang sử dụng phiên bản cli góc: 1.4.1

Câu trả lời:


690

Chỉ định mô-đun bằng tham số --module. Ví dụ: nếu mô-đun chính là app.module.ts, hãy chạy này:

ng g c new-component --module app

Hoặc nếu bạn đang ở trong một thư mục khác thì

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

23
trong trường hợp của tôi là ng g c admin/manageUsers ---module ../app
Alexus1024

trong trường hợp của tôi, tôi phải đảm bảo rằng tôi đã ở trong thư mục ứng dụng khi thực hiện nó
cây_are_great

80

Hãy thử điều này: Nó đang làm việc cho tôi

ng generate component componentName --module=app.module


1
Làm việc cho tôi. Cám ơn. [Angular CLI: 1.7.4 // Nút: 9.8.0 // Hệ điều hành: linux x64 // Angular: 5.2.9]
NajlaBioinfo

53

Điều này được gây ra do thế hệ đã cố gắng thêm thành phần của bạn vào một mô-đun, tức là thêm dòng này

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

nhưng nó tìm thấy 2 mô-đun.

Như đã nêu ở đây , họ đã sửa nó thành một tình huống miễn là trong thư mục gốc src / ứng dụng bạn chỉ có 1 mô-đun, bạn vẫn ổn, vì vậy chỉ cần di chuyển các mô-đun phụ sang thư mục con.

Nếu không bạn phải sử dụng --module


9
Đây có vẻ là câu trả lời hữu ích nhất, giúp bạn không phải chỉ định mô-đun mọi lúc, cảm ơn.
Arwin

Vâng. Đã chuyển các mô-đun bổ sung của tôi sang modulesthư mục con, và tất cả đều tốt.
đè bẹp

1
Cảm ơn đã nhắc nhở, cuối cùng tôi đã tìm thấy mô-đun thứ hai: RoutingModule và chuyển nó sang thư mục con
Zheng Kai

36

Đó là làm việc cho tôi

ng g component component-name --skip-import

7
Một điều quan trọng cần lưu ý là phương pháp này không tự động nhập các bộ này trong app.module.ts. Vì vậy, điều này phải được thực hiện bằng tay.
Gel

11

Chỉ cần một bản cập nhật nhỏ cho câu trả lời của Zisha.

Trong dự án của tôi, tất cả các mô-đun được đặt trong một thư mục gọi là "mô-đun" và tất cả các thành phần được đặt trong thư mục "thành phần" trong "src / app"

cấu trúc thư mục

Vì vậy, để tạo một thành phần theo một đường dẫn cụ thể, tôi đã sử dụng cú pháp sau:

ng gc thành phần_path / thành phần tên - mô-đun mô-đun_path / mô-đun tên

thí dụ :

ng gc thành phần / đăng nhập - mô-đun mô-đun / ứng dụng


1
Tôi không biết, nhưng, không phải là một "thực hành thiết kế" tốt hơn để đặt các thành phần của bạn trong các mô-đun liên quan của chúng sao?
Ojonugwa Jude Ochalifu

8

Angular CLI: 6.0.8
Nút: 10.4.0
Hệ điều hành: linux x64
Angular: 6.0.4

Trong trường hợp có một mô-đun tính năng (ví dụ manager.module.ts bên trong ví dụ: "/ quản lý" sub-folder) với các module định tuyến ra ngoài vào NgModule riêng biệt (ví dụ như quản lý-routing.module.ts ) thông báo lỗi:

Nhiều hơn một mô-đun phù hợp. Sử dụng tùy chọn bỏ qua để bỏ qua việc nhập thành phần vào mô-đun gần nhất.

không xuất hiện và thành phần được tạo và thêm đúng vào mô-đun manager.module.ts .

NHƯNG HÃY CẨN THẬN quy ước đặt tên! tên của mô-đun định tuyến phải chấm dứt bằng " -outout "!

Nếu mô-đun định tuyến được đặt tên như ví dụ: manager-router.module.ts , CLI sẽ khiếu nại với thông báo lỗi và mong bạn cung cấp tùy chọn --module để tự động thêm nhập thành phần:

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

hoặc là

ng generate component some-name --skip-import

nếu bạn muốn thêm phần nhập thủ công


Các -đã làm các mẹo! Tôi đã có lib-name.routing.module.tsthay vì lib-name-routing.module.ts.
mvermand

7

Có hai cách để giải quyết vấn đề này.

1) Bỏ qua (sử dụng lệnh --skip-import) nhập mặc định và tạo thành phần và một khi thành phần được tạo, nhập thủ công bất cứ nơi nào bạn muốn sử dụng.

ng generate component my-component --skip-import

2) Cung cấp tên mô-đun rõ ràng nơi bạn muốn nhập

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

4

Khi ứng dụng hoặc lib có nhiều mô đun lồng nhau

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

CLI góc

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

NRWL NX góc cạnh

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

Kết quả

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

3

Tôi đã nhận được lỗi dưới đây khi cố gắng tạo một thành phần mới trong một thư mục.

lỗi: Nhiều hơn một mô-đun khớp. Sử dụng tùy chọn bỏ qua để bỏ qua việc nhập thành phần vào mô-đun gần nhất.

Tôi đã sử dụng lệnh dưới đây và thành phần mới đã được tạo thành công trong một thư mục.

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

2

Dự án của tôi đã được tạo bằng Visual Studio Community 2017 và nó tạo ra 3 mô-đun riêng biệt: app.browser.module, app.server.module và app. Shared.module

Để tạo các thành phần của mình, tôi đã kiểm tra các câu trả lời ở trên và tìm thấy mô-đun của mình là app. Shared.module.

Vì vậy, tôi chạy:

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

2

Khi có nhiều hơn một mô-đun trong thư mục ứng dụng, việc tạo một thành phần với lệnh bên dưới sẽ thất bại:

ng generate component New-Component-Name

Lý do là CLI góc cạnh phát hiện nhiều mô-đun và không biết mô-đun nào để thêm thành phần. Vì vậy, bạn cần đề cập rõ ràng thành phần mô-đun nào sẽ được thêm vào:

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

1

nếu bạn đang tạo trong mô-đun cụ thể, hãy đi đến đường dẫn đó và chạy ng gc tên thành phần

khác tạo mô-đun đầu tiên ng g mô-đun mô-đun

cd arc / app / modulename đi đến đường dẫn modulename và tạo thành phần


0

thử ng g thành phần tiêu đề - ứng dụng mô hình nó hoạt động với tôi


1
hoạt động ở góc 6. Tôi đã chuyển các tuyến đường app.routing.module.tsdo đó xảy ra lỗi
học ...

0

Khi bạn có nhiều hơn một mô-đun, bạn cần chỉ định tên mô-đun

 ng g c componentName --module=modulename.module 

0

CLI góc: 8.3.1

Khi bạn có nhiều module.tstệp trong một mô-đun, bạn cần chỉ định tệp mô-đun nào bạn đang tạo thành phần.

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

ví dụ như tôi đã chia sẻ thư mục mô-đun bên trong mà tôi có shared.module.tsmaterial.module.tsthích cái này

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

và tôi muốn tạo sidebarthành phần shared.module.ts sau đó tôi sẽ chạy lệnh sau

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

nếu bạn muốn xuất thành phần thì chạy lệnh sau

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

0

CLI góc: 8.3.4 Nút: 10.16.3 Angualr: 4.2.5

Tôi đã sử dụng lệnh "dotnet new angular" để tạo dự án và nó đã tạo ra 3 mô-đun khác nhau trong thư mục ứng dụng (Mặc dù một thử nghiệm đơn giản với tên dự án mới chỉ tạo một mô-đun duy nhất.

xem các mô-đun trong dự án của bạn và quyết định mô-đun bạn muốn - sau đó chỉ định tên

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

Bạn có thể đọc thêm về các mô-đun tại đây: https://angular.io/guide/arch architecture -mô-đun


0

Trong trường hợp của tôi, có vẻ như ng không được đăng ký vào đường dẫn môi trường của tôi. Tôi đã sử dụng lệnh npm run để chạy các lệnh ng. Hãy lưu ý để vượt qua các đối số bạn cần thêm - theo thông số kỹ thuật chạy npm.

Ví dụ: npm chạy ng gc thành phần / lập lịch - --module = app

Hoặc: npm chạy ng gc thành phần / lập lịch - --skip-import


0

Tôi đã có cảnh báo này khi có angular.jsoncấu hình này:

"prefix": "app_ng"

Khi thay đổi "app"tất cả hoạt động hoàn toàn tốt.


0

Chỉ cần thêm một thông tin khác cho điều này cho bất kỳ ai như tôi, người chỉ xảy ra một ứng dụng duy nhất.

Tôi đã cài đặt ứng dụng của mình với app.module.ts chính và tôi đã định tuyến với mô đun định tuyến trong thư mục riêng của nó trong ứng dụng chính. Tôi đã trải qua và thực hiện một số 'dọn dẹp' vì tôi có một vài thứ khác cần được tổ chức tốt hơn. Một điều tôi đã làm là di chuyển định tuyến.module.ts vào thư mục gốc; vì nó là tập tin duy nhất trong thư mục mà tôi nghĩ rằng nó không cần thư mục riêng của nó.

Điều này hoạt động tốt lúc đầu nhưng lần sau tôi đã cố gắng tạo một thành phần mới (một thời gian sau, thông qua IDE WebStorm), nó đã thất bại với thông báo này. Sau khi đọc xong, tôi đã thử đặt mô-đun định tuyến trở lại vào một thư mục riêng và nó hoạt động trở lại.

Vì vậy, lưu ý cảnh báo cho người khác, đừng di chuyển mô-đun định tuyến vào thư mục gốc của bạn! Tôi chắc chắn cũng có nhiều cách khác để giải quyết vấn đề này nhưng tôi hài lòng với nó trong thư mục riêng của mình và sử dụng trình tạo IDE như trước đây.


0

Bạn phải cung cấp tên mô-đun chỉ định như

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

Nơi module-namenào bạn muốn cập nhật với thành phần mới được tạo.


-1

Là một hack, dưới các bước, làm việc cho tôi.

1) Di chuyển các tệp * .module.ts từ src / app đến một vị trí ngoài dự án.

2) Thực thi lệnh để tạo thành phần [ng g c component-name]

3) Di chuyển trở lại các tệp * .module.ts vào src / app /


Đối với giải pháp này, kiểm tra xem thành phần cũng được đăng ký trong mô-đun có liên quan. Chạy lệnh bằng cli nên làm như vậy. Tôi đoán điểm tiêu cực là do vấn đề này.
Homa Pourmohammadi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.