Węzeł na zawsze / usr / bin / env: node: nie ma takiego pliku lub katalogu


108

Zainstalowałem nodejs używając:

apt-get install nodejs

Następnie zainstalowałem npm za pomocą:

apt-get install npm

A potem zainstalowałem na zawsze przy użyciu:

npm install forever -g

Teraz idę do mojego projektu /var/www/myproject

i spróbuj biec forever start server.js

wtedy otrzymuję następujący komunikat:

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

Czy ktoś może mi powiedzieć, co się dzieje?



1
Otrzymuję ten błąd i używam Node Version Manager.
munchschair

Odpowiedzi:


270

EDYCJA: Od grudnia 2018 r. Nie jest to już właściwy sposób. Zobacz pozostałe dwie odpowiedzi.

Musisz dowiązać symbolicznie plik wykonywalny nodejs do węzła sudo ln -s "$(which nodejs)" /usr/local/bin/nodePrzyczyną tego jest to, że kiedy wykonujesz "apt-get install węzeł", instaluje on niepowiązany pakiet, więc musieli wybrać inną nazwę aby nie powodował konfliktu


4
co to jest $ (który nodejs) "Czy kod wklejasz coś powinienem po prostu skopiować wkleić czy?
Marc Rasmussen

11
"$ (which nodejs)" pobiera ścieżkę do pliku wykonywalnego nodejs. Kiedy umieścisz coś w "$ ()", zostanie ono wykonane, a następnie wstawione do polecenia zawierającego
chedabob

2
@chedabob Napotkałem ten sam problem, ale jeszcze go nie rozwiązałem, gdy uruchamiam twoje polecenie w tym czasie, otrzymałem ln: nie udało się utworzyć dowiązania symbolicznego
``

@ dasadiya-chaitanya W takim przypadku upewnij się, że istniejący plik wskazuje na właściwy plik wykonywalny węzła, uruchamiając następujące polecenie. ls -lart / usr / bin / node. Jeśli łącze symboliczne nie wskazuje na poprawny plik binarny, w takim przypadku usuń go. I ponownie uruchom: sudo ln -s "$ (which nodejs)" / usr / bin / node
brownmamba

4
W Debianie i Ubuntu istnieje pakiet nodejs-legacyudostępniający dowiązanie symboliczne. Nie powinieneś tego robić ręcznie. apt-get install nodejs-legacyto właściwy sposób rozwiązania problemu, zobacz moją odpowiedź poniżej.
Clément Schreiner

45

Chociaż zaakceptowana odpowiedź rozwiązuje problem, właściwy sposób, aby to zrobić, przynajmniej w przypadku Debiana Jessie i forward oraz Ubuntu 14.4 i nowszych 1, jest zainstalowanie nodejs-legacy :

apt-get install nodejs-legacy

Powodem jest to, że Debian miał już pakiet (węzeł) dostarczający / usr / bin / node , a węzeł nodejs binarny musiał zostać zainstalowany w / usr / bin / nodejs.

Plik nodejs-legacy zapewnia dowiązanie symboliczne z / usr / bin / nodejs do / usr / bin / node (i powoduje konflikt z węzłem pakietem ).

Źródło: [CTTE # 614907] Rozwiązanie konfliktu węzeł / nodejs i błąd Debiana # 614907: konflikt węzła: nazwa z interpreterem node.js


To jest właściwy sposób w Debianie / Ubuntu +1, świetny kontekst dla tych, którzy nie znają systemu operacyjnego.
Ligemer

18

Lepiej jest, jeśli zaktualizujesz węzeł do najnowszej wersji

  1. sudo npm cache clean -f
  2. sudo npm install -gn
  3. sudo n stabilny
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.