Làm cách nào để khắc phục cảnh báo Npm UNERET PEER DEPENDENCY?


223

Tôi đang dùng Windows 10, với Node 5.6.0 và npm 3.6.0. Tôi đang cố gắng cài đặt vật liệu góc và mdi vào thư mục làm việc của tôi. npm cài đặt các lỗi mdi vật liệu góc với:

+-- angular@1.5.0

+-- UNMET PEER DEPENDENCY angular-animate@^1.5.0

+-- UNMET PEER DEPENDENCY angular-aria@^1.5.0

+-- angular-material@1.0.6

+-- UNMET PEER DEPENDENCY angular-messages@^1.5.0 `-- mdi@1.4.57

npm WARN enoent ENOENT: no such file or directory, open
'C:\Users\xxxxx\Desktop\ngClassifieds\package.json' 

npm WARN angular-material@1.0.6 requires a peer of
angular-animate@^1.5.0 but none was installed. 

npm WARN angular-material@1.0.6 requires a peer of angular-aria@^1.5.0
but none was installed. 

npm WARN angular-material@1.0.6 requires a peer of
angular-messages@^1.5.0 but none was installed.

Làm cách nào để giải quyết vấn đề này để cài đặt AngularJS Material và MDI?


Liệu các loại lỗi tạo ra bất kỳ vấn đề?
blackHawk

Không phải cho Reza, vì vậy nó sẽ đến muộn, nhưng đối với bất kỳ ai khác ... Hãy thử điều này: npm xem các đồng nghiệp vật chất góc cạnh
peter70

1
Nói chung, không phải lúc nào bạn cũng muốn giải quyết một phụ thuộc chưa được đáp ứng. Ví dụ, một số gói có sự phụ thuộc vào other-package@ucci1.5.0 và bạn đã cài đặt other-package@2.0.0, bạn có thể không cần quay lại phiên bản. Sẽ tốt hơn để kiểm tra nếu bạn thực sự có vấn đề với phiên bản mới hơn.
John Pankowicz

Câu trả lời:


203

npm không còn cài đặt các phụ thuộc ngang hàng, vì vậy bạn cần cài đặt chúng theo cách thủ công, chỉ cần thực hiện một thao npm installtác cần thiết, sau đó thử cài đặt lại chính.


Trả lời bình luận:

Nó đúng trong thông điệp đó, nó nói rằng bạn đang thiếu

UNMET PEER DEPENDENCY angular-animate@^1.5.0 +-- 
UNMET PEER DEPENDENCY angular-aria@^1.5.0 +-- angular-material@1.0.6 +
UNMET PEER DEPENDENCY angular-messages@^1.5.0 `-- mdi@1.4.57` 

Vì vậy, bạn cần phải npm install angular angular-animate angular-aria angular-material angular-messages mdi


Có cách nào để tìm deps cho vật liệu góc cạnh để tôi có thể cài đặt không?
Reza

2
Bạn có cần thêm những phụ thuộc mới này vào package.json?
0xcaff

2
@caffinedmonkey sẽ là lý tưởng
Datsik

9
@caffinedmonkey nếu bạn chỉ định công --savetắc npm sẽ cập nhật gói.json cho bạn (hoặc --save-devnếu gói là phụ thuộc phát triển)
McGuireV10

33
không phải là toàn bộ điểm của npm để nó quản lý tất cả những phụ thuộc đó cho bạn sao? nếu tôi thực hiện cài đặt npm, sau đó nhận danh sách một loạt các phụ thuộc chưa được đáp ứng mà tôi phải tự thêm vào tệp composer.json của mình, tôi thậm chí còn nhận được giá trị gì từ npm tại thời điểm đó?
chiliNUT

66

UNMET PEER DEPENDENCYlỗi được đưa ra khi các phụ thuộc của một hoặc nhiều mô-đun được chỉ định trong package.jsontệp không được đáp ứng. Kiểm tra các cảnh báo cẩn thận và cập nhật các package.jsontập tin với các phiên bản phụ thuộc chính xác.

Sau đó chạy

rm -rf node_modules/
npm cache clean
npm install

Điều này sẽ cài đặt tất cả các phụ thuộc cần thiết một cách chính xác.


3
phụ thuộc ngang hàng là gì
aWebDeveloper 10/03/2017

Khi bạn cài đặt một gói, nó có thể lần lượt phụ thuộc vào các phiên bản cụ thể của các gói khác. Nếu bạn không cung cấp phiên bản phụ thuộc chính xác của gói thì "phụ thuộc ngang hàng" sẽ không được đáp ứng. Vì vậy, bạn cần cập nhật phiên bản dự kiến ​​của các gói phụ thuộc để giải quyết điều đó.
JayKrish

4
Điều đó đã không làm việc cho tôi. Tôi vẫn nhận được một cảnh báo về một đồng nghiệp được yêu cầu.
Adam Zerner

1
Sạch hơn nhiều so với giải pháp được chấp nhận! Một bộ mã này xử lý mọi trường hợp có thể xảy ra với sự cố của op, thay vì vấn đề cụ thể mà họ có.
Hold OfferHunger

sử dụng lệnh npm cache clean sẽ báo lỗi: Kể từ npm @ 5, bộ nhớ cache npm tự phục hồi khỏi các vấn đề tham nhũng và dữ liệu trích xuất từ ​​bộ đệm được đảm bảo là hợp lệ. Nếu bạn muốn đảm bảo mọi thứ đều nhất quán, thay vào đó hãy sử dụng 'npm cache verify'. npm ERR! Nếu bạn chắc chắn muốn xóa toàn bộ bộ đệm, hãy chạy lại lệnh này bằng --force.
CodeMonkey

30

Trong trường hợp của tôi, tất cả các phụ thuộc đã ở đó. Vui lòng cập nhật NPM trong trường hợp đó vì nó có thể đã bị sập. Nó giải quyết vấn đề của tôi.

npm install -g npm

Đã làm cho tôi. Tôi đã nhận được lỗi UNMET PEER DEPENDENCY typescriptkhi cố gắng cài đặt tslint. Sau khi cập nhật npm, trước tiên phải cài đặt typscript và sau đó cài đặt tslint.
Ravimallya

Vì một số lý do, tôi đã phải chạy nó nhiều lần cho đến khi nó có tất cả các phụ thuộc riêng được cập nhật.
Bộ giải mã

Điều này đã phá vỡ npm cho tôi và dẫn đến một loạt các lỗi.
Jack

14

npm-install-peers làm việc cho tôi.

npm install -g npm-install-peers

1
Không làm việc cho tôi: "Gói này dường như không có bất kỳ sự ngang hàng nào". Tuy nhiên, tôi có một số thông báo như "npm ERR! Pe dep bị thiếu: @ angular / common @ ^ 5.0.0 || ^ 6.0.0, được yêu cầu bởi @ agm / core @ 1.0.0-beta.3"
Almir Campos

2
Gói này chỉ cài đặt các thiết bị ngang hàng trực tiếp của gói hiện tại và không xử lý các thiết bị ngang hàng của các gói (đồng nghiệp của trẻ em).
Alex Skrypnyk

7

Một trong những nguyên nhân có thể gây ra lỗi này có thể là do bạn đã xác định phiên bản cũ hơn trong gói.json. Để giải quyết vấn đề này, thay đổi các phiên bản trong gói.json để phù hợp với các npm đang phàn nàn.

Sau khi hoàn tất, hãy chạy npm install và voila !!.


6

Câu trả lời này không áp dụng cho tất cả các trường hợp, nhưng nếu bạn không thể giải quyết lỗi bằng cách chỉ cần gõ npm install , bước này có thể giúp ích.

Giả sử bạn gặp lỗi này.

UNMET PEER DEPENDENCY packageA@4.2.0

npm WARN packageB@3.3.0 requires a peer of packageA@^3.1.0 but none was installed.

Điều này có nghĩa là bạn đã cài đặt phiên bản 4.2.0 của góiA, nhưng góiB@3.3.0 cần phiên bản 3.xx của pakageA. ( giải thích về ^ )

Vì vậy, bạn có thể giải quyết lỗi này bằng cách hạ cấp góiA xuống 3.xx, nhưng thông thường bạn không muốn hạ cấp gói.
Tin tốt là trong một số trường hợp, góiB không theo kịp góiA và người duy trì góiB đang cố gắng nâng mức phụ thuộc ngang hàng của góiA lên 4.xx
Trong trường hợp đó, bạn có thể kiểm tra xem có phiên bản cao hơn của góiB không yêu cầu phiên bản 4.2.0 của góiA trong npm hoặc github.

Ví dụ: Chuyển đến trang phát hànhnhập mô tả hình ảnh ở đây

Thường thì bạn có thể tìm thấy sự thay đổi đột phá về sự phụ thuộc như thế này.

packageB v4.0.0-beta.0

BREAKING CHANGE
package: requires packageA >= v4.0.0

Nếu bạn không tìm thấy bất cứ điều gì trên trang phát hành, hãy đi đến trang phát hành và tìm kiếm vấn đề theo từ khóa như peer. Bạn có thể tìm thấy thông tin hữu ích.

nhập mô tả hình ảnh ở đây

Tại thời điểm này, bạn có hai lựa chọn.

1) Nâng cấp lên phiên bản bạn muốn
2) Để lại lỗi trong thời gian này, đợi cho đến khi phiên bản ổn định được phát hành.

Nếu bạn chọn tùy chọn1:
Trong nhiều trường hợp, phiên bản không có latest thẻ do đó không ổn định. Vì vậy, bạn phải kiểm tra những gì đã thay đổi trong bản cập nhật này và đảm bảo mọi thứ sẽ không bị hỏng.

Nếu bạn chọn tùy chọn 2:
Nếu việc nâng cấp pakageA từ phiên bản 3 lên 4 là không đáng kể hoặc nếu người duy trì pakageB chưa thử nghiệm phiên bản 4 của pakageA nhưng nói rằng nó không có vấn đề gì, bạn có thể xem xét để lại lỗi.

Trong cả hai trường hợp, tốt nhất là kiểm tra kỹ lưỡng nếu nó không phá vỡ bất cứ thứ gì.

Cuối cùng, nếu bạn muốn biết lý do tại sao bạn phải tự làm một việc như vậy, liên kết này giải thích tốt.


3

Ok vì vậy tôi đã đấu tranh trong một thời gian dài cố gắng để tìm ra điều này. Đây là tùy chọn hạt nhân , khi bạn đã dùng hết tất cả các cách khác ..

  • Tạo một thư mục mới trên máy tính của bạn.
  • Tải xuống bản cài đặt hoàn toàn mới của angular - Tôi đã sử dụng hướng dẫn này: https://coursetro.com/posts/code/55/How-to-Install-an-Angular-4-App
  • Chạy nó, đảm bảo nó hoạt động
  • Sau đó cài đặt từng phần phụ thuộc của bạn từ tệp pack.json của bạn
  • Chạy nó sau khi mỗi cái được cài đặt

Khi bạn đã hoàn tất và nó vẫn hoạt động, hãy nhập mã thực tế của bạn vào dự án mới này. Sửa bất kỳ lỗi biên dịch phiên bản mới hơn của nguyên nhân góc.

Đó là những gì đã làm cho tôi .. 1 giờ làm lại so với 6 giờ cố gắng tìm ra wtf là sai .. ước gì tôi đã làm theo cách này để bắt đầu ..


OP đang sử dụng AngularJS
Edric

3

Các câu trả lời sẽ không luôn luôn làm việc. Nếu nó không khắc phục vấn đề của bạn. Hãy chắc chắn rằng bạn cũng đang sử dụng biểu tượng chính xác trong package.json. Điều này rất quan trọng để khắc phục cơn đau đầu đó. Ví dụ:

warning " > @angular/compiler-cli@5.2.7" has incorrect peer dependency "typescript@>=2.4.2 <2.7".
warning " > tsickle@0.25.6" has incorrect peer dependency "typescript@>=2.4.2 <2.6".

Vậy bản thảo của tôi cần nằm trong khoảng 2.4.2 đến 2.6 phải không?

Vì vậy, tôi đã thay đổi thư viện bản thảo của mình từ sử dụng "typescript": "^2.7"sang sử dụng "typescript": "^2.5". Có vẻ đúng?

Sai lầm.

Các ^phương tiện mà bạn đang okay với NPM sử dụng "typescript": "2.5"hoặc "2.6"hoặc "2.7"vv ...

Nếu bạn muốn tìm hiểu ý nghĩa của nó ^~thấy: sự khác biệt giữa dấu ngã (~) và dấu mũ (^) trong gói.json là gì?

Ngoài ra, bạn phải chắc chắn rằng gói tồn tại. Có lẽ không có "typescript": "2.5.9"tra cứu số gói. Để thực sự an toàn, chỉ cần xóa ~hoặc ^nếu bạn không muốn đọc ý nghĩa của chúng.


Cảm ơn bạn đã giải thích này. Điều gì xảy ra nếu tôi sử dụng hai thư viện trong đó thư viện đầu tiên (ví dụ library-one) sử dụng, ví dụ: ngang hàng package@<2.6và khác ( library-two) ngang hàng package@>2.7? Sau đó, tôi sẽ phải đối phó với hai phiên bản packagetrong cơ sở mã của mình chứ? Làm thế nào tôi biết rằng khi tôi sử dụng library-onetôi phải sử dụng nó package@2.5.9trong khi tôi sử dụng library-twotôi phải sử dụng nó package@2.7.1?
tonix

2

Hôm nay có sẵn Angular 2 RC.7 , và tôi đã gặp vấn đề tương tự với rxjs@5.0.0-beta.12UNMET PEER DependENCY.

Nếu bạn, như tôi, chỉ đơn giản là thay thế @angular/...rc.6để @angular/...rc.7- đó là chưa đủ. Bởi vì, ví dụ, @angular/routerkhông có rc.6phiên bản.

Trong trường hợp này, xem xét tốt hơn gói.json trong Bắt đầu nhanh


OP đang sử dụng AngularJS
Edric

-6

bạn có thể giải quyết bằng cách cài đặt các phụ thuộc UNMET trên toàn cầu.

ví dụ: cài đặt npm -g @ angular / common @ 4.4.6

cài đặt từng cái một. nó làm việc cho tôi


Đây thực sự là giải pháp tốt nhất, suy nghĩ? Cài đặt toàn cầu để bỏ qua "vấn đề" thực tế cho các phụ thuộc dự án?
qx3

1
Điều này sẽ cài đặt phụ thuộc toàn cầu vào máy của bạn. Đồng nghiệp của bạn sẽ không thể giải thích điều này trong một môi trường chung.
AC Patrice
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.