ฉันจะแก้ไขคำเตือนเกี่ยวกับเงินฝากออมทรัพย์ของ UNMET ได้อย่างไร


223

ฉันใช้ Windows 10 พร้อม Node 5.6.0 และ npm 3.6.0 ฉันพยายามติดตั้งวัสดุเชิงมุมและ mdi ลงในโฟลเดอร์การทำงานของฉัน npm ติดตั้งข้อผิดพลาดmdi เชิงมุมกับ:

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

ฉันจะแก้ไขปัญหานี้เพื่อติดตั้ง AngularJS Material และ MDI ได้อย่างไร


ข้อผิดพลาดประเภทนี้สร้างปัญหาหรือไม่?
blackHawk

ไม่ใช่สำหรับ Reza ดังนั้นมันจะช้า แต่สำหรับคนอื่น ๆ ... ลองทำสิ่งนี้: ดู npm ดูเพียร์วัสดุเชิงมุม
peter70

1
โดยทั่วไปแล้วคุณอาจไม่ต้องการแก้ไขการพึ่งพาที่ไม่คาดคิดเสมอไป ตัวอย่างเช่นมันเป็นแพ็คเกจที่มีการพึ่งพาบน other-package@^1.5.0 และคุณมี other-package@2.0.0 ติดตั้งอยู่คุณอาจไม่จำเป็นต้องย้อนกลับเวอร์ชัน มันจะเป็นการดีกว่าที่จะทดสอบว่าคุณกำลังมีปัญหากับเวอร์ชั่นใหม่กว่าหรือไม่
John Pankowicz

คำตอบ:


203

NPM ไม่ได้ติดตั้งการพึ่งพาแบบเพียร์อีกต่อไปดังนั้นคุณต้องติดตั้งแบบแมนนวลเพียงแค่ทำnpm installตามคำสั่งที่ต้องการจากนั้นลองติดตั้งตัวหลักอีกครั้ง


ตอบกลับความคิดเห็น:

มันถูกต้องในข้อความนั้นมันบอกว่าอันไหนที่คุณขาดหายไป

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 install angular angular-animate angular-aria angular-material angular-messages mdi


มีวิธีการค้นหา deps สำหรับวัสดุเชิงมุมเพื่อให้ฉันสามารถติดตั้ง?
Reza

2
คุณต้องการเพิ่มการอ้างอิงใหม่เหล่านี้ในของคุณpackage.jsonหรือไม่
0xcaff

2
@caffinatedmonkey ที่จะเหมาะ
Datsik

9
@caffinatedmonkey หากคุณระบุ--saveสวิตช์ npm จะอัปเดต package.json ของคุณ (หรือ--save-devถ้าแพ็คเกจเป็นการพึ่งพาการพัฒนา)
McGuireV10

33
ไม่ใช่จุดรวมของ npm ที่จะจัดการการพึ่งพาทั้งหมดเหล่านั้นให้คุณ? ถ้าฉันทำการติดตั้ง npm จากนั้นรับรายการของการพึ่งพาที่ไม่คาดคิดที่ฉันต้องเพิ่มลงในไฟล์ composer.json ของฉันด้วยตนเองสิ่งใดที่ฉันจะได้รับจาก npm ณ จุดนั้น?
chiliNUT

66

UNMET PEER DEPENDENCYเกิดข้อผิดพลาดเมื่อการพึ่งพาของหนึ่งโมดูลขึ้นไปที่ระบุในpackage.jsonไฟล์ไม่เป็นไปตาม ตรวจสอบคำเตือนอย่างระมัดระวังและอัพเดตpackage.jsonไฟล์ด้วยการอ้างอิงที่ถูกต้อง

จากนั้นเรียกใช้

rm -rf node_modules/
npm cache clean
npm install

สิ่งนี้จะติดตั้งการพึ่งพาที่จำเป็นทั้งหมดอย่างถูกต้อง


3
เพียร์พึ่งคืออะไร
aWebDeveloper

เมื่อคุณติดตั้งแพคเกจมันอาจจะขึ้นอยู่กับแพ็คเกจอื่น ๆ ที่เฉพาะเจาะจง หากคุณไม่ได้จัดทำแพคเกจเวอร์ชันที่ขึ้นต่อกันที่ถูกต้องระบบจะไม่พบ "Peer dependency" ดังนั้นคุณต้องอัปเดตแพ็คเกจที่ต้องพึ่งพาเวอร์ชันที่คาดหวังเพื่อแก้ปัญหานั้น
JayKrish

4
นั่นไม่ได้ผลสำหรับฉัน ฉันยังคงได้รับคำเตือนเกี่ยวกับเพื่อนที่ต้องการ
Adam Zerner

1
สะอาดกว่าโซลูชันที่ยอมรับ! รหัสชุดนี้จะจัดการกับทุกกรณีที่เป็นไปได้ของปัญหาของ op แทนที่จะเป็นปัญหาเฉพาะที่พวกเขามี
HoldOffHunger

การใช้คำสั่ง npm cache clean จะทำให้เกิดข้อผิดพลาด: ตั้งแต่ npm @ 5, การแคชในตัวเองของ npm จากปัญหาความเสียหายและข้อมูลที่แยกจากแคชนั้นรับประกันว่าถูกต้อง หากคุณต้องการให้แน่ใจว่าทุกอย่างสอดคล้องกันให้ใช้ 'การตรวจสอบแคช npm' แทน npm ข้อผิดพลาด! หากคุณแน่ใจว่าต้องการลบแคชทั้งหมดให้รันคำสั่งนี้อีกครั้งด้วย --force
CodeMonkey

30

ในกรณีของฉันการอ้างอิงทั้งหมดมีอยู่แล้ว โปรดอัปเดตNPMในกรณีนั้นเนื่องจากอาจเกิดข้อผิดพลาด มันแก้ไขปัญหาของฉัน

npm install -g npm

ทำงานให้ฉัน ผมได้รับข้อผิดพลาดเมื่อพยายามที่จะติดตั้งUNMET PEER DEPENDENCY typescript tslintเมื่ออัปเดต npm ต้องติดตั้ง typscript ก่อนแล้วจึงติดตั้ง tslint
Ravimallya

ด้วยเหตุผลบางอย่างฉันต้องเรียกใช้มากกว่าหนึ่งครั้งจนกว่าจะมีการปรับปรุงการอ้างอิงของตัวเองทั้งหมด
Coderer

สิ่งนี้หักฉันสำหรับฉันและส่งผลให้เกิดข้อผิดพลาด
แจ็ค

14

npm-install-peerทำเพื่อฉัน

npm install -g npm-install-peers

1
ไม่ได้ผลสำหรับฉัน: "แพคเกจนี้ดูเหมือนจะไม่ได้มีเพียร์ทูเพนเดอร์ใด ๆ " อย่างไรก็ตามฉันมีหลายข้อความเช่น "npm ERR! peer dep หายไป: @ angular / common @ ^ 5.0.0 || ^ 6.0.0, ต้องการโดย @ agm / core @ 1.0.0-beta.3"
Almir Campos

2
แพคเกจนี้จะติดตั้งโดยตรงเพียร์โดยตรง deps ของแพคเกจปัจจุบันและตายไม่จัดการเพียร์ dep deps ของ deps ของแพคเกจ (เพื่อนของเด็ก ๆ )
Alex Skrypnyk

7

หนึ่งในสาเหตุที่เป็นไปได้มากที่สุดของข้อผิดพลาดนี้อาจเป็นเพราะคุณได้กำหนดรุ่นที่เก่ากว่าใน package.json ของคุณ หากต้องการแก้ปัญหานี้ให้เปลี่ยนรุ่นใน package.json เพื่อให้ตรงกับคำสั่งซื้อที่ระบุไว้

เมื่อเสร็จแล้วให้เรียกใช้การติดตั้ง npm และ voila !!


6

คำตอบนี้ใช้ไม่ได้กับทุกกรณี แต่หากคุณไม่สามารถแก้ไขข้อผิดพลาดได้เพียงแค่พิมพ์ npm install ขั้นตอนนี้อาจช่วยได้

สมมติว่าคุณได้รับข้อผิดพลาดนี้

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.

ซึ่งหมายความว่าคุณติดตั้งรุ่น 4.2.0 ของ packageA แต่ packageB@3.3.0 ต้องการเวอร์ชั่น 3.xx ของ pakageA (คำอธิบายของ ^ )

ดังนั้นคุณสามารถแก้ไขข้อผิดพลาดนี้ได้โดยการลดระดับแพ็คเกจ A เป็น 3.xx แต่โดยปกติคุณไม่ต้องการลดระดับแพ็คเกจ
ข่าวดีก็คือในบางกรณีแพคเกจ B นั้นไม่สอดคล้องกับ packageA และผู้ดูแลแพคเกจ B พยายามอย่างหนักที่จะเพิ่มการพึ่งพาเพียร์ของ packageA เป็น 4.xx
ในกรณีนี้คุณสามารถตรวจสอบว่ามีแพ็คเกจ B รุ่นที่สูงกว่าหรือไม่ ต้องการเวอร์ชัน 4.2.0 ของ packageA ใน npm หรือ github

ตัวอย่างเช่นไปที่หน้าปล่อยป้อนคำอธิบายรูปภาพที่นี่

บ่อยครั้งที่คุณสามารถพบกับการเปลี่ยนแปลงครั้งใหญ่เกี่ยวกับการพึ่งพาเช่นนี้

packageB v4.0.0-beta.0

BREAKING CHANGE
package: requires packageA >= v4.0.0

peerถ้าคุณไม่พบอะไรบนหน้าการเปิดตัวไปที่หน้าปัญหาและค้นหาปัญหาโดยใช้คำสำคัญเช่น คุณอาจพบข้อมูลที่เป็นประโยชน์

ป้อนคำอธิบายรูปภาพที่นี่

ณ จุดนี้คุณมีสองตัวเลือก

1) อัปเกรดเป็นรุ่นที่คุณต้องการ
2) ปล่อยให้เกิดข้อผิดพลาดในขณะนี้รอจนกว่าจะปล่อยรุ่นที่เสถียร

หากคุณเลือกตัวเลือก 1:
ในหลาย ๆ กรณีเวอร์ชันจะไม่มีlatest แท็กดังนั้นจึงไม่เสถียร ดังนั้นคุณต้องตรวจสอบสิ่งที่เปลี่ยนแปลงในการอัปเดตนี้และตรวจสอบให้แน่ใจว่าไม่มีอะไรผิดพลาด

หากคุณเลือก option2:
หากการอัพเกรด pakageA จากรุ่น 3 เป็น 4 เล็กน้อยหรือหากผู้ดูแลระบบของ pakageB ไม่ได้ทดสอบรุ่นที่ 4 ของ pakageA แต่บอกว่ามันน่าจะไม่มีปัญหาคุณอาจพิจารณาออกจากข้อผิดพลาด

ในทั้งสองกรณีควรทดสอบอย่างละเอียดว่าไม่มีอะไรแตกหักหรือไม่

สุดท้ายถ้าคุณอยากรู้ว่าทำไมคุณต้องทำสิ่งนี้ด้วยตนเองลิงก์นี้จะอธิบายได้ดี


4

คำตอบที่ได้รับจะไม่ทำงานเสมอไป หากไม่สามารถแก้ไขปัญหาของคุณได้ package.jsonตรวจสอบให้แน่ใจว่าคุณยังมีการใช้สัญลักษณ์ที่ถูกต้องในของคุณ สิ่งนี้สำคัญมากในการแก้ไขอาการปวดหัว ตัวอย่างเช่น:

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

ดังนั้นตัวพิมพ์ดีดของฉันต้องอยู่ระหว่าง 2.4.2 และ 2.6 ใช่ไหม

ดังนั้นผมจึงเปลี่ยนห้องสมุด typescript ของฉันจากการใช้กับการใช้"typescript": "^2.7" "typescript": "^2.5"ดูเหมือนถูกต้องหรือไม่

ไม่ถูกต้อง.

^หมายความว่าคุณจะโอเคกับ NPM ใช้"typescript": "2.5"หรือ"2.6"หรือ"2.7"ฯลฯ ...

หากคุณต้องการที่จะเรียนรู้สิ่งที่เป็น^และ~มันหมายถึงเห็น: อะไรคือความแตกต่างระหว่างตัวหนอน (~) และรูปหมวก (^) ใน package.json?

นอกจากนี้คุณต้องให้แน่ใจว่าแพคเกจที่มีอยู่ อาจไม่มี"typescript": "2.5.9"หมายเลขแพ็กเกจค้นหา เพื่อความปลอดภัยจริงๆเพียงแค่ลบ~หรือ^ถ้าคุณไม่ต้องการอ่านสิ่งที่พวกเขาหมายถึง


ขอบคุณสำหรับคำอธิบายนี้ เกิดอะไรขึ้นถ้าผมใช้สองห้องสมุดที่แรก (เช่นlibrary-one) ใช้เช่นเพียร์ของpackage@<2.6และอื่น ๆ ( library-two) ของเพียร์package@>2.7? ถ้าอย่างนั้นฉันจะต้องจัดการกับpackagecodebase สองเวอร์ชันหรือไม่? จะทราบได้อย่างไรว่าเมื่อผมใช้library-oneฉันต้องใช้มันด้วยpackage@2.5.9ในขณะเดียวกันเมื่อฉันใช้library-twoฉันต้องใช้มันด้วยpackage@2.7.1?
tonix

3

ตกลงดังนั้นฉันพยายามเป็นเวลานานพยายามที่จะคิดออก นี่คือนิวเคลียร์ตัวเลือกสำหรับเมื่อคุณหมดทุกวิธีอื่น ๆ ..

  • สร้างโฟลเดอร์ใหม่บนพีซีของคุณ
  • ดาวน์โหลดการติดตั้งเชิงมุมใหม่ล่าสุด - ฉันใช้คำแนะนำนี้: https://coursetro.com/posts/code/55/How-to-Install-an-Angular-4-App
  • เรียกใช้ตรวจสอบให้แน่ใจว่ามันใช้งานได้
  • จากนั้นติดตั้งการพึ่งพาของคุณทีละไฟล์จากไฟล์ package.json ของคุณ
  • รันหลังจากติดตั้งแต่ละรายการแล้ว

เมื่อเสร็จแล้วและยังใช้งานได้ให้นำเข้ารหัสที่แท้จริงของคุณไปยังโครงการใหม่นี้ แก้ไขข้อผิดพลาดในการคอมไพล์ด้วยสาเหตุเชิงมุมรุ่นใหม่

นั่นคือสิ่งที่ฉันทำ .. 1 ชั่วโมงของการทำงานซ้ำกับ 6 ชั่วโมงพยายามคิดว่า wtf นั้นผิด .. หวังว่าฉันจะทำแบบนี้เพื่อเริ่มต้น ..


OP ใช้AngularJS
Edric

2

วันนี้พร้อมใช้งานAngular 2 rc.7และฉันมีปัญหาคล้ายกันกับrxjs@5.0.0-beta.12เงินฝากของ UNMET PEER

หากคุณชอบฉันเพียงแค่เปลี่ยน@angular/...rc.6ไป@angular/...rc.7- ก็ไม่พอ เพราะตัวอย่างเช่น@angular/routerไม่มีrc.6รุ่น

ในกรณีนี้ให้ตรวจสอบpackage.jsonดีกว่าในQuick start


OP ใช้AngularJS
Edric

-6

คุณสามารถแก้ไขได้โดยการติดตั้งการพึ่งพา UNMET ทั่วโลก

ตัวอย่าง: npm install -g @ angular / common @ 4.4.6

ติดตั้งทีละคน มันใช้งานได้สำหรับฉัน


นี่เป็นทางออกที่ดีที่สุดจริง ๆ หรือ? การติดตั้งทั่วโลกเพื่อละเว้น "ปัญหา" จริงสำหรับการอ้างอิงโครงการ?
qx3

1
สิ่งนี้จะติดตั้งการพึ่งพาทั่วโลกบนเครื่องของคุณ เพื่อนของคุณจะไม่สามารถบัญชีสิ่งนี้ได้ในสภาพแวดล้อมที่ใช้ร่วมกัน
AC Patrice
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.