วิธีการติดตั้งการพึ่งพาเพียร์ npm โดยอัตโนมัติ?


274

ตัวอย่างเช่นเมื่อฉันติดตั้ง Angular2:

npm install --save angular2
temp@1.0.0 /Users/doug/Projects/dougludlow/temp
├── angular2@2.0.0-beta.3 
├── UNMET PEER DEPENDENCY es6-promise@^3.0.2
├── UNMET PEER DEPENDENCY es6-shim@^0.33.3
├── UNMET PEER DEPENDENCY reflect-metadata@0.1.2
├── UNMET PEER DEPENDENCY rxjs@5.0.0-beta.0
└── UNMET PEER DEPENDENCY zone.js@0.5.11

npm WARN angular2@2.0.0-beta.3 requires a peer of es6-promise@^3.0.2 but none was installed.
npm WARN angular2@2.0.0-beta.3 requires a peer of es6-shim@^0.33.3 but none was installed.
npm WARN angular2@2.0.0-beta.3 requires a peer of reflect-metadata@0.1.2 but none was installed.
npm WARN angular2@2.0.0-beta.3 requires a peer of rxjs@5.0.0-beta.0 but none was installed.
npm WARN angular2@2.0.0-beta.3 requires a peer of zone.js@0.5.11 but none was installed.

มีธงเวทย์มนตร์ที่ฉันสามารถส่งผ่านไปยัง npm ที่จะติดตั้งการพึ่งพาของเพื่อนหรือไม่ ฉันไม่สามารถหาหนึ่ง ... มันน่าเบื่อที่จะคัดลอกและวางการพึ่งพาเพื่อนและด้วยตนเองทำให้แน่ใจว่าฉันมีรุ่นที่ถูกต้อง

กล่าวอีกนัยหนึ่งฉันไม่ต้องการทำ:

npm install --save angular2@2.0.0-beta.3 es6-promise@^3.0.2 es6-shim@^0.33.3 reflect-metadata@0.1.2 rxjs@5.0.0-beta.0 zone.js@0.5.11

อะไรคือวิธีที่ดีกว่า


คุณได้แก้ไขปัญหานั้นแล้วหรือยัง ฉันมีปัญหาเดียวกันกับการติดตั้ง angular2 แม้หลังจากติดตั้ง es6-contract ด้วยตนเองพร้อมกับแฟล็ก -g และลองติดตั้ง npm ใหม่อีกครั้ง -g angular2 ฉันได้รับข้อผิดพลาด / คำเตือนเดียวกัน 5 การพึ่งพาเพียร์ unmet เพียร์ ES6-shim, es6-shim
nttakr

4
@nttakr - ใช่การติดตั้งเวอร์ชั่นที่แน่นอนที่มันต้องการในฐานะการพึ่งพาจากเพื่อนช่วยกำจัดคำเตือน คุณไม่ต้องการติดตั้งแบบโกลบอล (ด้วยแฟล็ก -g) คุณต้องการติดตั้งแบบโลคัล (แฟล็ก -S) แต่อย่างที่ฉันพูดพวกเขาจำเป็นต้องเป็นเวอร์ชันที่แน่นอน (เช่น: angular2@2.0.0-beta.3ต้องการes6-promise@^3.0.2) อย่างไรก็ตามฉันต้องการทราบว่ามีคำสั่ง / ตั้งค่าสถานะซึ่งติดตั้งการพึ่งพาเพียร์โดยอัตโนมัติ
Douglas Ludlow

@DouglasLudlow คุณใช้ NPM รุ่นใดอยู่
peteb

@peteb: npm -v=>3.5.3
ดักลาสลุดโลว์

ฉันมีปัญหาเดียวกันและฉันไม่พบวิธีแก้ไขปัญหา ....
youngwind

คำตอบ:


178

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

ดังนั้นไม่ด้วยเหตุผลที่กำหนดคุณไม่สามารถติดตั้งได้โดยอัตโนมัติด้วย npm 3 ขึ้นไป


4
ใช่ฉันเห็นสิ่งนี้: github.com/npm/npm/issues/6565 ... ฉันแค่หวังว่าคุณยังสามารถเลือกติดตั้งด้วยธงหรืออะไรก็ได้ เดาฉันจะต้องเปิดปัญหาหรืออะไรบางอย่าง
ดักลาสลุดโลว์

157
คุณจัดการกับปัญหาประเภทนี้อย่างไร ฉันไม่ใช่ผู้เชี่ยวชาญ npm ดังนั้นเมื่อฉันอ่าน "x ต้องใช้เพียร์ของ y แต่ไม่พบใคร" ฉันถามตัวเอง "เพื่อนคนไหน" และ "ฉันจะทำให้ทุกอย่างทำงานได้อีกครั้งได้อย่างไร" มีกระบวนการหรือไม่? คุณขุดลงในรหัสของ x และ y จนกว่าคุณจะพบว่ามีอะไรหายไป? เมื่อคุณพบว่ามีอะไรหายไปคุณจะทำอย่างไรต่อไป ขอบคุณ!
Dan Cancro

81
อามันเป็นปัญหาภาษาอังกฤษ: "x ต้องใช้เพียร์ของ y แต่ไม่มีการติดตั้งใด ๆ " ควรเป็น "x ต้องการเพียร์ y, แต่ y ไม่ได้ติดตั้ง" ฉันเข้าใจว่า "x ต้องการหนึ่งในเพื่อนของ y แต่ไม่ได้ติดตั้งเพียร์และเราไม่ได้บอกคุณว่าต้องการเพื่อนคนไหนของคุณ"
Dan Cancro

1
นอกจากนี้ถ้าฉันติดตั้งการพึ่งพาเพียร์ด้วยตนเองที่ระบุไว้ฉันได้รับมันเป็นextraneousแพ็กเกจ
plsnoban

3
มี "ภายนอก" เพราะคุณจำเป็นต้องเพิ่มพวกเขาไปยังแพคเกจอ้างอิงของคุณ
Dinoboff

37

ฉันแก้ไขได้โดยเขียนใหม่ package.json ด้วยค่าที่แน่นอนว่ามีคำเตือนเกี่ยวกับ:

npm WARN angular2@2.0.0-beta.3 requires a peer of es6-shim@^0.33.3 but none was installed.

package.json: "es6-shim": "^ 0.33.3",

npm WARN angular2@2.0.0-beta.3 requires a peer of reflect-metadata@0.1.2

package.json: "reflect-metadata": "0.1.2",

Delete node_modules directory

npm install

15
บางทีnpm cache clean, npm installอาจจะดีกว่าเช็ด node_modules? ฉันมักจะละเว้นจากการลบ node_modules ฉันชอบที่จะค้นหาสิ่งที่เป็นปัญหามากกว่าที่จะกำจัดไดเรกทอรี
Bruno

ฉันไม่คิดว่านี่เป็นความคิดที่ปลอดภัยมากสำหรับคนที่จะทำงาน พวกเขามีการเปลี่ยนแปลงที่สูงขึ้นของความขัดแย้งที่ทวีความรุนแรงยิ่งขึ้น: มีรหัสที่ไม่ตรงกับห้องสมุด
zoomlar

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

22

รหัสโกงมีประโยชน์ในสถานการณ์นี้และอื่น ๆ ...

├──ถอนเงินจากตำแหน่งเพื่อนร่วมทีม @ angular / common @ 4.0.2

├── UNMET PEER DEPENDENCY @ angular / compiler @ 4.0.2

├──ถอนเงินจากตำแหน่งเพื่อนที่ @ angular / compiler-cli @ 4.0.2

├── UNMET PEER DEPENDENCY @ angular / core @ 4.0.2

├──ถอนเงินจากตำแหน่งเพื่อนไม่ดี @ angular / forms @ 4.0.2

├──ถอนเงินจากตำแหน่งเพื่อนร่วมทีม @ angular / http @ 4.0.2

├──ถอนเงินจากตำแหน่งเพื่อนที่ @ angular / platform-browser @ 4.0.2

├──ถอนเงินจากตำแหน่งเพื่อนที่ @ angular / platform-browser-dynamic @ 4.0.2>

  1. คัดลอกและวางข้อผิดพลาดของคุณในโปรแกรมแก้ไขรหัส
  2. เน้นส่วนที่ไม่ต้องการด้วยเคอร์เซอร์ของคุณ ในกรณีนี้ '├── UNMET PEER DEPENDENCY'
  3. กดคำสั่ง + dหลายครั้ง
  4. กดลบเป็นครั้งที่สอง (เว้นวรรคหากคุณเน้น '├── UNMET PEER DEPENDENCY' โดยไม่ตั้งใจ)
  5. กดขึ้นหนึ่งครั้ง เพิ่ม 'การติดตั้ง npm'
  6. กดลงหนึ่งครั้ง เพิ่ม '- บันทึก
  7. คัดลอกข้อมูลของคุณกลับไปที่ cli และเรียกใช้

npm install @ angular / common @ 4.0.2 @ angular / คอมไพเลอร์ @ 4.0.2 @ angular / compiler-cli @ 4.0.2 @ angular / core @ 4.0.2 @ angular / แบบฟอร์ม @ 4.0.2 @ angular / http @ 4.0 .2 @ angular / platform-browser @ 4.0.2 @ angular / platform-browser-dynamic @ 4.0.2 - บันทึก


8
--saveเห็นได้ชัดว่าตัวเลือกนี้ไม่จำเป็นต้องใช้อีกต่อไปตั้งแต่ npm 5.0.0: stackoverflow.com/a/19578808/12484
Jon Schneider

12

โครงการnpm-install-peersจะตรวจจับเพื่อนและติดตั้ง

เนื่องจากv1.0.1ไม่รองรับการเขียนกลับไปที่package.jsonอัตโนมัติซึ่งจะแก้ปัญหาความต้องการของเราที่นี่

กรุณาเพิ่มการสนับสนุนของคุณที่จะออกในเที่ยวบิน: https://github.com/spatie/npm-install-peers/issues/4


36
ในการทำงานมันทำให้ฉันมีข้อความนี้ This package doesn't seem to have any peerDependencies
Thabung

2
ฉันมีข้อความเดียวกัน
Thibault Boursier

7
ตามที่ผมเข้าใจมันnpm-install-peersจะติดตั้งลงทะเบียนในpeerDependencies package.jsonมันจะไม่ติดตั้งการอ้างอิงเช่นpeerDependencies angular2
drizzd

ใช่ไปที่ความคิดเห็น @drizzd ที่สอง: npm-install-peersมีไว้สำหรับการติดตั้งใน"peerDependencies"รายการใน package.json ของโครงการของคุณเท่านั้น คุณกำลังพยายามติดตั้ง"peerDependencies"รายชื่อในnode_modules/<package>/package.jsonไฟล์แต่ละไฟล์ของคุณไม่ใช่การอ้างอิงจากเพื่อนโดยตรง
วิลลี่ย์จะ

5

peerDependenciesฉันพบข้อผิดพลาดเหล่านี้เมื่อผมได้รับการพัฒนาแพคเกจที่มี NPM ผมต้องมั่นใจว่าใด ๆนอกจากนี้ยังถูกระบุว่าเป็นpeerDependencies devDependenciesโครงการจะไม่ใช้แพ็คเกจที่ติดตั้งไว้ทั่วโลกโดยอัตโนมัติ


นี่เป็นทางออกที่เรียบร้อยเนื่องจากการเพิ่ม 'การอ้างอิง' ค่อนข้างงุ่มง่าม!
Ashot


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