ข้อผิดพลาด“ ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว” ขณะใช้ npm


34

ฉันติดตั้งโหนดและ npm โดยใช้คำแนะนำที่ให้ไว้ที่นี่

ฉันสามารถใช้โหนดได้สำเร็จ อย่างไรก็ตามในขณะที่ฉันพยายามติดตั้งโมดูล "Formidable" โหนดฉันได้รับข้อผิดพลาดต่อไปนี้:

$npm install formidable
bash: /usr/local/bin/npm: /usr/local/bin/node: bad interpreter: No such file or directory

เมื่อฉันทำwhich npmฉันได้รับผลลัพธ์ต่อไปนี้:

$which npm
/usr/local/bin/npm

ฉันไม่รู้ว่าเกิดอะไรขึ้นกับ npm ที่นี่ - มีความคิดว่าฉันจะแก้ไขได้อย่างไร?


ยินดีต้อนรับสู่ถาม Ubuntu! /usr/local/bin/ฉันเห็นคุณได้ติดตั้งโหนดใน แพ็คเกจที่คุณใช้ในคำแนะนำที่คุณเชื่อมโยงกับสิ่งนี้ ฉันคิดว่าคุณได้ติดตั้งโหนดอื่นจากแหล่งที่มาเช่นกัน โปรดเล่าเรื่องทั้งหมด
gertvdijk

@gertvdijk มีการติดตั้งโหนด 0.8.14 ในตอนแรก ฉันต้องการอัปเกรดเป็น 0.8.18 จากนั้นฉันก็วิ่ง$sudo apt-get remove --purge nodejs npmแต่สิ่งนี้ไม่ได้ผล node --versionหลังจากติดตั้ง 0.8.18 ยังคงพบ 0.8.14 ดังนั้นสิ่งที่ฉันทำก็คือติดตามโพสต์ซึ่งฉันหาไม่ได้ในตอนนี้ - โดยพื้นฐานแล้วมันจะสั่งให้ทำwhich nodeตามrm -r /usr/local/bin/...- โดยทั่วไปแล้วไฟล์ที่เกี่ยวข้องกับโหนดในไดเรกทอรีนั้น หลังจากนี้ฉันติดตั้งโหนดใหม่และเป็นเวอร์ชันที่อัปเดตแล้ว มันใช้งานได้ดี แต่ npm ไม่ใช่
user109187

ใช่นี่คือสิ่งที่เกิดขึ้นเมื่อคุณติดตั้งจากแหล่งที่มา มันจะสับสนการจัดการแพคเกจของคุณและคุณในฐานะผู้ใช้ กรุณาติดตั้งซอฟต์แวร์เป็นแพ็คเกจเท่านั้นเว้นแต่คุณจะรู้ว่ากำลังทำอะไรอยู่ ใช้คำแนะนำในการถอนการติดตั้งกับสคริปต์ที่คุณใช้ในการติดตั้งเวอร์ชันก่อนหน้านี้เพื่อถอนการติดตั้งอย่างถูกต้อง และโปรด แก้ไขคำถามของคุณเพื่อให้ข้อมูลเพิ่มเติม นี่คือเว็บไซต์ถามตอบไม่ใช่ฟอรัมสนทนาคุณเห็นหรือไม่ :)
gertvdijk

@gertvdijk ผมพบว่าการโพสต์ซึ่งได้รับคำสั่งให้ลบไฟล์ด้วยตนเอง - stackoverflow.com/a/5917184/1907800 เส้นทางที่นี่คือ / usr / bin / node
user109187

คำตอบ:


51

ทำตามคำแนะนำ @ gertvdijk ฉันถอนการติดตั้ง NPM โดยใช้สคริปต์:

rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/npm*

(ซึ่งสามารถพบได้ที่นี่ )

แม้หลังจากปฏิบัติตามข้างต้นแล้วฉันยังพบข้อผิดพลาดอีก:

$ npm install formidable  
bash: /usr/local/bin/npm: No such file or directory

ดังนั้นฉันวิ่งเข้าไปhash -rใน terminal (ตามคำแนะนำที่พบภายใต้NPM จะไม่ทำงานหลังจากอัปเกรด ) และ voila - มันใช้งานได้ ตอนนี้ NPM ใช้งานได้!


1
สิ่งเดียวที่มีประโยชน์คือการค้นพบhashซึ่งสามารถใช้เพื่อชี้ไปยังโหนดอื่น / npm (ถ้าฉันต้องการทำงานกับโหนดมากกว่าหนึ่งรุ่น?)
309383

แขกผู้ใช้ที่สวยงาม
LM_Fielding

4
hash -r ช่วยฉันด้วย
diogo.abdalla

อะไรนะhash!?
จันจุงคิม

11

อูบุนตูและบางส่วนติดตั้งลินุกซ์ล่ามโหนดเป็นและไม่/usr/bin/nodejs/usr/local/bin/node

คุณสามารถแก้ปัญหานี้ติดตั้งnodejs-legacyแพคเกจที่สร้าง symlink จากไป/usr/bin/nodejs/usr/bin/node

วิธีการแก้:

sudo apt-get install nodejs-legacy

การอ้างอิง: แพ็คเกจ nodejs-legacy


1
ดูเหมือนว่าจะnodejs-legacyไม่มีอีกต่อไป
Martín De la Fuente

2

ดูเหมือนว่าคุณได้ติดตั้งโหนดรุ่นอื่นจากแหล่งที่มาก่อนหน้านี้ นี่คือการระบุโดย/usr/local/binเส้นทางที่ดูเหมือนว่าจะติดตั้งในขณะนี้

  1. ถอนการติดตั้งที่คุณติดตั้งจากแหล่งที่มา ดูคำแนะนำที่มากับแหล่งที่มาเกี่ยวกับวิธีการทำ ไม่มีวิธีการเดียวในการถอนการติดตั้งสคริปต์ซอฟต์แวร์ที่ติดตั้งซึ่งใช้ไม่ได้กับการจัดการแพ็คเกจของระบบของคุณ
  2. ติดตั้งแพ็กเกจด้วยจะปรากฏในคำแนะนำที่คุณเชื่อมโยงกับคำถามของคุณ
  3. ตรวจสอบว่าwhich npmขณะนี้แสดงรายการ/usr/binเป็นเส้นทางการติดตั้ง

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

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