Node forever / usr / bin / env: node: Không có tệp hoặc thư mục nào như vậy


108

Tôi đã cài đặt nodejs bằng:

apt-get install nodejs

Sau đó, tôi đã cài đặt npm bằng:

apt-get install npm

Và sau đó tôi đã cài đặt mãi mãi bằng cách sử dụng:

npm install forever -g

Bây giờ tôi đi đến dự án của tôi /var/www/myproject

và cố gắng chạy forever start server.js

thì tôi nhận được thông báo sau:

/usr/bin/env: node: No such file or directory

Bất cứ ai có thể cho tôi biết chuyện gì đang xảy ra?



1
Tôi gặp lỗi này và tôi đang sử dụng Trình quản lý phiên bản Node.
munchschair, 19:17

Câu trả lời:


270

CHỈNH SỬA: Kể từ tháng 12 năm 2018, đây không còn là cách chính xác nữa. Xem hai câu trả lời còn lại.

Bạn cần liên kết biểu tượng tệp thực thi nodejs với nút sudo ln -s "$(which nodejs)" /usr/local/bin/nodeLý do là khi bạn thực hiện "apt-get install node", nó sẽ cài đặt một gói không liên quan, vì vậy họ phải chọn một tên khác để không xung đột


4
$ (nodejs) là gì "là mã bạn dán thứ gì đó, tôi chỉ nên sao chép dán hay?
Marc Rasmussen.

11
"$ (which nodejs)" lấy đường dẫn của tệp thực thi nodejs. Khi bạn đặt thứ gì đó bên trong "$ ()", nó sẽ được thực thi và sau đó được chèn vào lệnh chứa
chedabob

2
@chedabob Tôi đã gặp phải vấn đề tương tự nhưng tôi vẫn chưa giải quyết được nó khi tôi đang chạy lệnh của bạn tại thời điểm đó, tôi nhận được ln: không tạo được liên kết tượng trưng '/ usr / bin / node': Tệp tồn tại
DASADIYA CHAITANYA

@ dasadiya-chaitanya Trong trường hợp đó, hãy đảm bảo rằng tệp hiện có đang trỏ đến một nút đúng có thể thực thi bằng cách chạy như sau. ls -lart / usr / bin / node. Nếu liên kết biểu tượng không trỏ đến đúng nhị phân, trong trường hợp đó hãy xóa nó. Và chạy lại phần sau: sudo ln -s "$ (mà nodejs)" / usr / bin / node
brownmamba

4
Trên Debian và Ubuntu, có một gói nodejs-legacycung cấp liên kết tượng trưng. Bạn không nên làm điều đó theo cách thủ công. apt-get install nodejs-legacylà cách chính xác để khắc phục sự cố, hãy xem câu trả lời của tôi dưới đây.
Clément Schreiner

45

Mặc dù câu trả lời được chấp nhận sẽ khắc phục được sự cố, nhưng cách chính xác để làm điều đó, ít nhất là với Debian Jessie trở đi và Ubuntu 14.4 trở đi 1 là cài đặt nodejs-inherit :

apt-get install nodejs-legacy

Lý do là Debian đã có một gói (nút) cung cấp / usr / bin / node , và nhị phân nút nodejs phải được cài đặt vào / usr / bin / nodejs.

Các nodejs-inherit cung cấp một liên kết tượng trưng từ / usr / bin / nodejs đến / usr / bin / node (và xung đột với gói node ).

Nguồn: [CTTE # 614907] Giải quyết xung đột node / nodejslỗi Debian # 614907: node: name xung đột với trình thông dịch node.js


Đây là cách chính xác trên Debian / Ubuntu +1, bối cảnh tuyệt vời cho những người không quen thuộc với hệ điều hành.
Ligemer 14/02/18

18

Sẽ tốt hơn nếu bạn cập nhật lên phiên bản nút mới nhất

  1. sudo npm cache clean -f
  2. sudo npm install -gn
  3. sudo n ổn định
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.