ทำไมการติดตั้ง npm บอกว่าฉันมีการพึ่งพาที่ไม่คาดคิด?


404

ฉันมีแพ็คเกจโหนด เมื่อฉันเรียกใช้npm installจากรากของแพคเกจจะติดตั้งสิ่งต่าง ๆ มากมาย แต่จากนั้นพิมพ์ข้อความแสดงข้อผิดพลาดต่าง ๆ ที่มีลักษณะดังนี้:

npm WARN ไม่พึ่งพาการพึ่งพา / ผู้ใช้ / seanmackesey / google_drive / รหัส / สำรวจ / เครื่องกำเนิด / node_modules / findup-sync / node_modules / glob ต้องใช้ graceful-fs@'~1.2.0 'แต่จะโหลด

ฉันต้องสับสนกับสิ่งที่npm installทำ หากตรวจพบการพึ่งพาไม่ควรติดตั้งหรือไม่ ภายใต้เงื่อนไขใดที่ทำให้ฉันมีข้อความแสดงข้อผิดพลาดเช่นนี้และฉันจะแก้ไขการอ้างอิงได้อย่างไร

คำตอบ:


397

ฉันเชื่อว่าเป็นเพราะการแก้ปัญหาการพึ่งพานั้นใช้งานไม่ได้โปรดดูhttps://github.com/npm/npm/issues/1341#issuecomment-20634338

ต่อไปนี้เป็นวิธีแก้ปัญหาที่เป็นไปได้:

  1. จำเป็นต้องติดตั้งโมดูลระดับบนสุดด้วยตนเองซึ่งมีการขึ้นต่อกันที่ไม่คาดคิด: npm install findup-sync@0.1.2

  2. จัดโครงสร้าง package.json ของคุณใหม่ วางโมดูลระดับสูงทั้งหมด (ทำหน้าที่เป็นการพึ่งพาสำหรับโมดูลอื่น ๆ ) ที่ด้านล่าง

  3. รันnpm installคำสั่งอีกครั้ง

ปัญหาอาจเกิดจากความล้มเหลวในการดาวน์โหลดแพ็กเกจทั้งหมดเนื่องจากการหมดเวลาใช้งานหรืออย่างอื่น

หมายเหตุ: npm install findup-sync@0.1.2คุณยังสามารถติดตั้งแพคเกจที่ล้มเหลวด้วยตนเองเช่นกันโดยใช้

ก่อนnpm installดำเนินการขั้นตอนต่อไปนี้อาจช่วยได้:

  • ลบ node_modules โดยใช้ rm -rf node_modules/
  • วิ่ง npm cache clean

ทำไมบางครั้ง 'การลบ node_modules' จึงจำเป็น? เมื่อโมดูลที่ซ้อนกันล้มเหลวในการติดตั้งในnpm installภายหลังnpm installจะไม่ตรวจพบการพึ่งพาซ้อนที่ขาดหายไป

หากเป็นกรณีนี้บางครั้งก็เพียงพอที่จะลบการพึ่งพาระดับสูงสุดของโมดูลที่ซ้อนกันที่หายไปเหล่านั้นและทำงานnpm installอีกครั้ง ดู


22
การลบโมดูลโหนดและการล้างแคชทำให้ใช้งานได้สำหรับฉัน
MarkoHiel

4
การลบ 'node_modules' การเรียกใช้ 'การล้างแคช npm' และการเรียกใช้ 'การติดตั้ง npm' จะช่วยแก้ไขปัญหาของฉัน ฉันต้องเรียกใช้ 'npm_install' สามครั้งจนกว่าฉันจะได้รับการอ้างอิงทั้งหมดโดยไม่มีข้อผิดพลาด
hendrix

2
ถ้าไม่ทำงานสำหรับเหตุผลการเข้าถึงลองnpm cache clean sudo npm cache clean
Soroush

12
@ Soroush สุ่มสี่สุ่มห้าเพียงแค่เพิ่ม sudo ไปยังสิ่งที่ไม่ถูกต้องไม่ได้แก้ไขอย่างน่าอัศจรรย์หมายความว่าคุณไม่รู้ว่าเกิดอะไรขึ้น
Edgar Aroutiounian

5
ทำไม "สารละลาย" อื่น ๆ สำหรับ npm ถึงรวม rm r node_modules? และทำไมมันถึงเป็นตัวเลือกเดียวในกรณีส่วนใหญ่? นั่นไม่ใช่วิธีที่ฉันคิดว่าผู้จัดการแพคเกจควรทำงานได้เหมือนกัน
phil294

83

มันเกิดขึ้นกับผมเมื่อ WIFI npm installลงไปในระหว่างการ การลบnode_modulesและเรียกใช้อีกครั้งnpm installแก้ไขได้


26
npm cache cleanและพยายาม
ijse

5
การติดตั้งโหนดใหม่อาจไม่จำเป็น แต่ระหว่างการทำเช่นนั้นnpm cache cleanและการลบnode_modulesคำแนะนำนี้ใช้ได้สำหรับฉัน
RichLitt

@ RichLitt ใช่ทำnpm cache cleanไม่เพียงพอสำหรับฉันฉันต้องลบnode_modulesเช่นกันเพื่อให้มันทำงานหลังจากเครือข่ายล้มเหลวในระหว่างการ "ติดตั้ง"
Mark Tomlin

ฉันสับสนว่าnode_modulesต้องลบไดเรกทอรีใด ฉันมีปัญหาคล้ายกันกับข้อผิดพลาด/usr/local/lib/node_modules/npm/node_modules/read-installed/node_modules/readdir-scoped-modules requires graceful-fs@'^4.1.2'
wuliwong

1
@wuliwong ระดับบนสุดหนึ่ง
geon

33

ฉันแก้ไขปัญหาโดยใช้บรรทัดคำสั่งเหล่านี้

  • $ rm -rf node_modules/
  • $ sudo npm update -g npm
  • $ npm install

มันจบแล้ว!


5
หลังจากเรียกใช้ sudo npm update -g npm, npm ของฉันถูกแสดงว่าไร้ประโยชน์ความพยายามใด ๆ ที่จะติดตั้งผลลัพธ์ใด ๆ ใน "npm ERR! ไม่สามารถหาโมดูล 'read-package-json'" im จะต้องลงคะแนนนี้
MichaelB

มันใช้งานได้สำหรับฉันและสำหรับคนอื่นบางทีคุณอาจมีปัญหาอื่น ลองติดตั้งโมดูล read-package-json ทั่วโลกsudo npm install -g read-package-jsonหรือติดตั้ง npm ใหม่ของคุณ
zatamine

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

1
อาจต้องการเพิ่ม "แคชสะอาด npm" ในที่นั่นด้วย
Alexander Mills

1
อย่าใช้sudoกับ npm
สิทธิ์

11

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

คำสั่งnpm listให้รายการของการติดตั้งทั้งหมดให้node_modulesคุณ เมื่อฉันอัพเกรดจากรุ่น 1.4.2 เป็นรุ่น 2.7.4 โมดูลจำนวนมากที่ถูกตั้งค่าสถานะไว้ก่อนหน้านี้WARN unmet dependencyไม่ได้รับการบันทึกเช่นนี้อีกต่อไป

หากต้องการอัปเดต npm คุณควรพิมพ์npm install -g npmบน MacOSX หรือ Linux บน Windows ฉันพบว่าการดาวน์โหลดและการรันตัวติดตั้ง nodejs อีกครั้งเป็นวิธีที่มีประสิทธิภาพมากขึ้นในการอัพเดต npm


ฉันมีปัญหาเดียวกันกับเวอร์ชัน npm ที่เผยแพร่ใน CentOS 7 repos ฉันติดตั้งเวอร์ชัน npm ล่าสุดจาก node.js และปัญหาหายไปดังนั้นฉันคิดว่าสิทธิ์ของคุณอาจเป็นปัญหาของเวอร์ชันเก่า
Elouan Keryell-Even

9

คำตอบข้างต้นไม่ได้ช่วยฉันอย่างเต็มที่แม้หลังจากลบnode_modulesไดเรกทอรีแล้ว

คำสั่งด้านล่างช่วยฉันในที่สุด:

npm config set registry http://registry.npmjs.org/

โปรดทราบว่าสิ่งนี้จะดึงโมดูลโหนดผ่านการเชื่อมต่อ HTTP ที่ไม่ปลอดภัย

Src: https://stackoverflow.com/a/13119867/4082503


สิ่งนี้ช่วยฉันได้เช่นกันกับโฮสต์ของฉันกำลังเปลี่ยนเส้นทางการรับส่งข้อมูล
dimiguel

1
@dimgl ดีใจที่ได้ทราบ :)
Vinay Vemula

1
@Dejel คุณลองคำตอบอื่น ๆ ด้วย คุณอาจต้องเรียกใช้npm installหลายครั้งและ / หรือติดตั้งแพ็คเกจโหนดด้วยตนเองทีละชุด
Vinay Vemula

4

สำหรับทุกคน-- UNMET PEER DEPENDENCYเช่นอดีต -- UNMET PEER DEPENDENCY rxjs@5.0.0-rc.2ติดตั้งการอ้างอิงนั้นด้วยnpm install --save rxjs@5.0.0-rc.2จนกว่าคุณจะไม่มีอีกUNMET DEPENDENCIESต่อไป

โชคดี.


1
ทำให้ฉันมีข้อผิดพลาดเดียวกันรวมถึงข้อผิดพลาดใหม่:ERR! code 1
Wouter Vanherck

1
@WouterVanherck คุณสามารถโปรดลองrm -rf node_modulesแล้วและnpm cache clean npm installหากยังไม่ได้ทำงานผมขอแนะนำให้คุณอีกครั้งrm -rf node_modulesแล้วแล้วnpm i -g yarn เส้นด้ายค่อนข้างดีในการจัดการ โชคดี. yarn installnode_modules
Akash

1
ใช่มันpeerDependenciesมีไว้สำหรับ เพื่อผลักดันให้คุณเลือกรุ่นอย่างมีสติ
Kamafeather

3

ฉันเรียกใช้npm listและติดตั้งแพคเกจทั้งหมดที่แสดงรายการเป็น UNMET DEPENDENCY

ตัวอย่างเช่น

├── UNMET DEPENDENCY css-loader@^0.23.1
npm install css-loader@^0.23.1


2

วิธีนี้แก้ไขได้สำหรับฉัน:

  1. แก้ไขหมายเลขเวอร์ชั่นในpackage.jsonตามข้อผิดพลาด;
  2. ลบnode_modules( rm -rf node_modules);
  3. npm installวิ่งใหม่

ทำซ้ำขั้นตอนเหล่านี้จนกว่าจะไม่มีข้อผิดพลาดอีก


1

บางสิ่งในหลอดเลือดดำที่คล้ายกันฉันจะเพิ่มอีกหนึ่งขั้นตอน

โปรดทราบว่าในเวอร์ชัน npm> 1.4.9 'การติดตั้ง npm' จะติดตั้ง devDependencies ก่อนอื่นให้ลองลบโมดูลและแคชที่มีอยู่:

remove node_modules $ rm -rf node_modules/
run $ npm cache clean

จากนั้นลอง:

npm install --dev
npm update --dev

อย่างน้อยนี้จะแก้ไขการแก้ปัญหาการอ้างอิงซ้ำ


6
ธง --dev คืออะไร
Alexander Mills

1

- ต้องการติดตั้ง devDependencies ซ้ำ ๆ (และทำงานตลอดไป .. ) จะช่วยแก้ไขความแตกต่างของรุ่นได้อย่างไร?

คุณสามารถลองลบโฟลเดอร์ node_moduls จากนั้นล้างแคช npm และรัน 'npm i' อีกครั้ง


1

ฉันมีปัญหาที่คล้ายกันขณะติดตั้ง React Native CLI ฉันไม่แน่ใจว่า/node_modulesควรลบไดเรกทอรีใดหลังจากอ่านคำตอบที่นี่ ในที่สุดฉันก็วิ่ง

npm update -g

และสามารถติดตั้งแพ็คเกจได้หลังจากนั้น


1

ฉันพยายามทำงานกับระบบการปรับใช้อัตโนมัติที่ทำงานnpm installดังนั้นโซลูชันเหล่านี้จำนวนมากจะไม่ทำงานสำหรับฉันในแบบอัตโนมัติ ฉันไม่ได้อยู่ในตำแหน่งที่จะลบ / สร้างใหม่node_modules/ไม่สามารถเปลี่ยน Node.js ได้อย่างง่ายดาย

ดังนั้นฉันจึงสิ้นสุดการรันnpm shrinkwrap- เพิ่มnpm-shrinkwrap.jsonไฟล์ลงในชุดการปรับใช้ของฉันและเรียกใช้การติดตั้งจากที่นั่น ที่แก้ไขปัญหาสำหรับฉัน ด้วยไฟล์ shrinkwrap เป็น 'ผู้ช่วย', npm ดูเหมือนจะสามารถค้นหาแพ็คเกจที่เหมาะสมและติดตั้งให้ฉันได้ (Shrinkwrap มีคุณสมบัติอื่น ๆ เช่นกัน แต่นี่คือสิ่งที่ฉันต้องการสำหรับกรณีนี้โดยเฉพาะ)


1

ฉันพบปัญหานี้เมื่อฉันกำลังติดตั้งแพ็คเกจตอบสนองและสิ่งนี้ใช้ได้สำหรับฉัน: npm install --save <package causing this error>



1

npm installจะติดตั้งแพคเกจทั้งหมดจากnpm-shrinkwrap.jsonแต่อาจเพิกเฉยต่อแพคเกจpackage.jsonหากไม่ได้กำหนดไว้ล่วงหน้า

หากคุณกำลังโครงการมีnpm-shrinkwrap.jsonให้แน่ใจว่าคุณเรียกใช้การงอกใหม่มันทุกครั้งที่คุณเพิ่มเพิ่มnpm shrinkwrap / ลบ / เปลี่ยนpackage.json


0

ดูแลเกี่ยวกับรุ่นเชิงมุมของคุณถ้าคุณทำงานภายใต้เชิงมุม 2.xx ดังนั้นคุณอาจต้องอัพเกรดเป็นเชิงมุม 4.xx

การพึ่งพาบางคนต้องการมุม 4

นี่คือแบบฝึกหัดสำหรับวิธีการติดตั้ง angular 4 หรือปรับปรุงโครงการของคุณ


0

กำลังอัปเดตเป็น 4.0.0

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

บน Linux / Mac:

npm install @angular/{common,compiler,compiler-cli,core,forms,http,platform-browser,platform-browser-dynamic,platform-server,router,animations}@latest typescript@latest --save 

บน Windows:

npm install @angular/common@latest @angular/compiler@latest @angular/compiler-cli@latest @angular/core@latest @angular/forms@latest @angular/http@latest @angular/platform-browser@latest @angular/platform-browser-dynamic@latest @angular/platform-server@latest @angular/router@latest @angular/animations@latest typescript@latest --save

จากนั้นให้รันคำสั่ง ng เสิร์ฟหรือ npm start ที่คุณใช้ตามปกติและทุกอย่างจะทำงานได้

หากคุณอาศัยภาพเคลื่อนไหว, นำเข้าใหม่BrowserAnimationsModuleจากในรากของคุณ@angular/platform-browser/animations NgModuleหากไม่มีสิ่งนี้รหัสของคุณจะรวบรวมและเรียกใช้ แต่ภาพเคลื่อนไหวจะทำให้เกิดข้อผิดพลาด นำเข้าจาก@angular/coreถูกคัดค้านใช้การนำเข้าจากแพ็คเกจใหม่

import { trigger, state, style, transition, animate } from '@angular/animations';.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.