Không có tập tin hoặc thư mục như vậy Lỗi trong khi sử dụng npm


34

Tôi đã cài đặt nút và npm bằng cách sử dụng các hướng dẫn được cung cấp ở đây

Tôi đã có thể sử dụng nút thành công. Tuy nhiên, khi tôi cố gắng cài đặt mô-đun nút "Formidable", tôi gặp lỗi sau:

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

Khi tôi làm which npmtôi nhận được đầu ra sau:

$which npm
/usr/local/bin/npm

Tôi không có manh mối về những gì sai với npm ở đây - có ý tưởng nào về cách tôi có thể khắc phục điều này không?


Chào mừng bạn đến hỏi Ubuntu! Tôi thấy bạn đã cài đặt Node /usr/local/bin/. Các gói như bạn đã sử dụng trong hướng dẫn bạn liên kết để không làm điều này. Tôi nghĩ bạn cũng đã cài đặt một Nút khác từ nguồn. Hãy kể toàn bộ câu chuyện.
gertvdijk

@gertvdijk Vâng, đã có nút 0.8.14 được cài đặt ban đầu. Tôi muốn nâng cấp này lên 0.8.18. Sau đó tôi đã chạy $sudo apt-get remove --purge nodejs npmnhưng điều này không làm việc. node --versionsau khi cài đặt 0.8.18 vẫn hiển thị 0.8,14. Vì vậy, những gì tôi đã làm là theo dõi một bài đăng mà bây giờ tôi không thể tìm thấy - về cơ bản nó được hướng dẫn để làm which nodetheo rm -r /usr/local/bin/...- về cơ bản là một số tệp liên quan đến nút trong thư mục đó. Bây giờ, sau này, tôi đã cài đặt lại nút và đó là phiên bản cập nhật. Nó hoạt động tốt, nhưng npm thì không.
109187

Vâng, đây là những gì xảy ra khi bạn cài đặt từ nguồn. Nó sẽ gây nhầm lẫn cho quản lý gói của bạn và bạn là người dùng. Vui lòng chỉ cài đặt phần mềm dưới dạng các gói trừ khi bạn biết bạn đang làm gì. Sử dụng các hướng dẫn gỡ cài đặt với các tập lệnh bạn đã sử dụng để cài đặt phiên bản cũ hơn này để gỡ cài đặt chính xác. Và hãy chỉnh sửa câu hỏi của bạn để cung cấp thêm thông tin. Đây là một trang web hỏi đáp, không phải là một diễn đàn thảo luận, bạn thấy sao? :)
gertvdijk

@gertvdijk Tôi tìm thấy bài đăng hướng dẫn xóa các tệp theo cách thủ công - stackoverflow.com/a/5917184/1907800 . Đường dẫn ở đây là / usr / bin / node
user109187

Câu trả lời:


51

Lấy gợi ý @gertvdijk, tôi đã gỡ cài đặt NPM bằng cách sử dụng tập lệnh:

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

(có thể tìm thấy ở đây )

Ngay cả sau khi thực hiện các điều trên, tôi đã gặp một lỗi khác:

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

Vì vậy, tôi đã chạy hash -rtrong thiết bị đầu cuối (theo hướng dẫn được tìm thấy trong NPM Không chạy sau khi nâng cấp ) và voila - nó đã hoạt động. NPM bây giờ hoạt động!


1
điều hữu ích duy nhất ở đây là khám phá hash, có thể được sử dụng đơn giản để trỏ đến một nút / npm khác (nếu tôi muốn làm việc với nhiều hơn một phiên bản của nút thì sao?)
user309383

Người dùng khách đẹp.
LM_Fielding

4
băm -r đã cứu tôi
diogo.abdalla

làm gì hashvậy!?
Chanjung Kim

11

Ubuntu và một số bản phân phối Linux cài đặt trình thông dịch của nút như /usr/bin/nodejs, và không /usr/local/bin/node.

Bạn có thể giải quyết vấn đề này khi cài đặt nodejs-legacygói tạo liên kết tượng trưng từ /usr/bin/nodejsđến /usr/bin/node.

Dung dịch:

sudo apt-get install nodejs-legacy

Tài liệu tham khảo: gói nodejs-legacy


1
Dường như nodejs-legacykhông còn tồn tại.
Martín De la Fuente

2

Có vẻ như bạn đã cài đặt một phiên bản Node khác từ nguồn trước đó. Điều này được chỉ định bởi /usr/local/binđường dẫn nơi nó dường như được cài đặt ngay bây giờ.

  1. Gỡ cài đặt cái bạn đã cài đặt từ nguồn. Xem hướng dẫn có với nguồn về cách làm như vậy. Không có cách duy nhất nào về cách gỡ cài đặt các tập lệnh phần mềm được cài đặt mà không hoạt động với quản lý gói hệ thống của bạn.
  2. Cài đặt các gói với được liệt kê trong các hướng dẫn bạn liên kết đến trong câu hỏi của bạn.
  3. Xác nhận rằng which npmbây giờ liệt kê /usr/binnhư đường dẫn cài đặt.

Nói chung, bạn không bao giờ phải cài đặt các gói từ nguồn. Và nếu bạn làm như vậy, xin vui lòng nhận thức được hậu quả khi bạn ghi đè quản lý gói ở đây, nó sẽ bị nhầm lẫn bởi nó.

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.