Knoten für immer / usr / bin / env: Knoten: Keine solche Datei oder kein solches Verzeichnis

108

Ich habe nodejs installiert mit:

apt-get install nodejs

Dann habe ich npm installiert mit:

apt-get install npm

Und dann habe ich für immer installiert mit:

npm install forever -g

Jetzt gehe ich zu meinem Projekt /var/www/myproject

und versuchen zu rennen forever start server.js

dann bekomme ich folgende nachricht:

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

Kann mir jemand sagen, was los ist?

Marc Rasmussen
quelle
1
Ich bekomme diesen Fehler und verwende Node Version Manager.
Munchschair

Antworten:

270

EDIT: Ab Dezember 2018 ist dies nicht mehr der richtige Weg. Siehe die beiden anderen Antworten.

Sie müssen die ausführbare Datei des Knotens mit dem Knoten verknüpfen. sudo ln -s "$(which nodejs)" /usr/local/bin/nodeDer Grund dafür ist, dass beim Ausführen von "apt-get install node" ein nicht verwandtes Paket installiert wird, sodass ein anderer Name ausgewählt werden musste, damit keine Konflikte auftreten

Chedabob
quelle
4
Was ist $ (welche Nodejs)? "Ist der Code, den Sie einfügen, etwas, das ich einfach kopieren sollte, einfügen oder?
Marc Rasmussen
11
"$ (which nodejs)" ruft den Pfad der ausführbaren Datei nodejs ab. Wenn Sie etwas in "$ ()" einfügen, wird es ausgeführt und dann in den enthaltenen Befehl eingefügt
chedabob
2
@chedabob Ich hatte das gleiche Problem, aber ich hatte es noch nicht gelöst, als ich Ihren Befehl zu diesem Zeitpunkt ausführte. Ich bekam die ln: Symbolische Verknüpfung konnte nicht erstellt werden '/ usr / bin / node': Datei existiert
DASADIYA CHAITANYA
@ dasadiya-chaitanya Stellen Sie in diesem Fall sicher, dass die vorhandene Datei auf einen korrekten ausführbaren Knoten verweist, indem Sie Folgendes ausführen. ls -lart / usr / bin / node. Wenn der Symlink nicht auf die richtige Binärdatei zeigt, löschen Sie ihn in diesem Fall. Und führen Sie Folgendes erneut aus: sudo ln -s "$ (which nodejs)" / usr / bin / node
brownmamba
4
Unter Debian und Ubuntu gibt es ein Paket nodejs-legacymit dem symbolischen Link. Du sollst es nicht manuell machen. apt-get install nodejs-legacyist der richtige Weg, um das Problem zu beheben, siehe meine Antwort unten.
Clément Schreiner
45

Während die akzeptierte Antwort das Problem behebt, besteht die richtige Vorgehensweise, zumindest bei Debian Jessie und Forward sowie Ubuntu 14.4 und Forward 1 darin, NodeJS-Legacy zu installieren :

apt-get install nodejs-legacy

Der Grund ist, dass Debian bereits ein Paket (Knoten) hatte, das / usr / bin / node bereitstellte, und dass die Nodejs- Node- Binärdatei in / usr / bin / nodejs installiert werden musste.

Das Nodejs-Legacy- Paket bietet eine symbolische Verknüpfung von / usr / bin / nodejs zu / usr / bin / node (und steht in Konflikt mit dem Node- Paket).

Quelle: [CTTE # 614907] Lösung des Node / NodeJS-Konflikts und des Debian-Fehlers # 614907: Node: Name-Konflikt mit Node.js-Interpreter

Clément Schreiner
quelle
Dies ist der richtige Weg unter Debian / Ubuntu +1, ein großartiger Kontext für diejenigen, die nicht mit dem Betriebssystem vertraut sind.
Ligemer
18

Es ist besser, wenn Sie auf die neueste Knotenversion aktualisieren

  1. sudo npm cache clean -f
  2. sudo npm install -gn
  3. sudo n stabil
Shantanu
quelle