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?



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


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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.