NodeJs kann nicht installiert werden: / usr / bin / env: node: Keine solche Datei oder kein solches Verzeichnis

302

Ich versuche, nodeJs in meinem Ubuntu 14.04 zu installieren, um GruntJs zu verwenden.

Ich habe über Ubuntu eine andere Vorgehensweise gelesen ( Probleme? ), Also habe ich Folgendes getan, um es zu installieren:

sudo apt-get install npm

sudo npm install -g grunt-cli

Wenn ich danach grunze, habe ich den Fehler:

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

Also habe ich versucht:

curl -sL https://deb.nodesource.com/setup | sudo bash -

sudo apt-get install -y nodejs

sudo apt-get update

Und ich habe es erneut versucht und immer noch den Fehler erhalten: Ich habe versucht:

sudo add-apt-repository https://launchpad.net/~chris-lea/+archive/node.js/

sudo apt-get install -y nodejs

Ich habe diese Nachricht:

nodejs is already the newest version.
0 to upgrade, 0 to newly install, 0 to remove and 3 not to upgrade.

Ich habe eine Bereinigung für alle Fälle versucht:

sudo apt-get autoremove

Aber nein, der Fehler ist immer noch da: Wenn ich grunze, bekomme ich immer noch /usr/bin/env: node: No such file or directory

Was soll ich machen?

Rosamunda
quelle

Antworten:

794

Ein Symlink löst das Problem:

ln -s /usr/bin/nodejs /usr/bin/node

(Mein Dank und +1 Stimme für die Antwort von Bodokaiser ).

Rosamunda
quelle
97
sudo apt-get install nodejs-legacyerstellt auch diesen Link, siehe Beschreibung unter packages.debian.org/sid/nodejs-legacy
anatoly techtonik
1
Der Symlink löste das Problem und sparte viel Entwicklungszeit. Vielen Dank!
Farzad YZ
Dieser Fix ist ernsthaft ein Lebensretter. Insbesondere, wenn Sie dem Handbuch zu Fixing-Berechtigungen hier folgen. Docs.npmjs.com/getting-started/fixing-npm-permissions
Josh Frankel
Danke dir! Dies ersparte mir den Nachmittag beim Versuch, eine Node-App unter Google Cloud Linux einzurichten.
Jovan
1
Sie sollten verwenden, which nodedamit Sie den richtigen Pfad zu Ihrem Knoten erhalten. Der Befehl wäre alsoln -s "$(which node)" /usr/bin/node
technogeek1995
117

Das Problem liegt nicht bei der Version des Knotens. Stattdessen wird NodeJS standardmäßig in Ubuntu installiert. Wenn Sie eine Node-Anwendung in Ubuntu ausführen, müssen Sie nodejs somethign.jsstattdessen ausführennode something.js

Der im Terminal aufgerufene Anwendungsname lautet also nodejsund nicht node. Aus diesem Grund ist ein Bedarf für eine Symlink gibt es einfach vorwärts alle Befehle empfangen , wie nodezu nodejs.

ln -s /usr/bin/nodejs /usr/bin/node
Muhammad bin Yusrat
quelle
6
Sie müssen diesen Befehl mit sudo ausführen, wenn der Fehler "ln: Fehler beim Erstellen der symbolischen Verknüpfung '/ usr / bin / node'"
Suraj Dubey
ln -s / usr / bin / nodejs / usr / bin / node
rd_
54

Ich denke, Sie sollten die neueste Knotenversion aktualisieren

sudo npm cache clean -f
sudo npm install -g n
sudo n stable
vanlan228
quelle
1
Nur ein Tipp; Einrücken Ihrer Codezeilen um 4 Leerzeichen;) nist auch kein Befehl, der mit Node.JS verknüpft ist.
Qix - MONICA wurde
@ David basierend auf der Paketbeschreibung auf NPM : "Interaktiv alle Ihre
Knotenversionen
Das Problem für mich
gelöst
Ich habe ein laravelProjekt von der windowsMaschine auf kopiert ubuntu 16.04und laravel mixhatte ein Problem mit npm run watchUND diese Lösung hat bei mir funktioniert und jetzt ist das Problem weg
AN
29

Wenn Sie mit dem Befehl nodejs auf den Knoten am Ubuntu-Terminal zugreifen können, kann dieses Problem einfach gelöst werden, indem Sie eine symbolische Verknüpfung von nodejs und node mit erstellen

ln -s /usr/bin/nodejs /usr/bin/node

und dies kann das Problem lösen

Hiro
quelle
10

Mach einfach

$ sudo apt-get install nodejs-legacy

Und es wird anfangen zu arbeiten.

Prabhu Nandan Kumar
quelle
9

Ich habe festgestellt, dass dies oft ein falscher Benennungsfehler ist. Wenn Sie von einem Paketmanager installieren, wird Ihr bin möglicherweise als nodejs bezeichnet, sodass Sie ihn nur wie folgt verknüpfen müssen

ln -s /usr/bin/nodejs /usr/bin/node
Ahmad Awais
quelle
1
Anstatt ein negatives Feedback hinzuzufügen, lassen Sie mich hier im Kommentar wissen, was falsch ist, damit ich Ihnen dabei helfen kann. Da es nichts Falsches gibt, einen Symlink zu erstellen, insbesondere wenn es Ihnen hilft, die Dinge besser zu verwalten.
Ahmad Awais
1
Ich selbst bevorzuge diesen Ansatz. Es ist sauber.
Muhammad Gelbana
8

Wenn Sie bereits nodejs installiert haben (überprüfen Sie mit which nodejs) und kein weiteres Paket installieren möchten, können Sie als root:

update-alternatives --install /usr/bin/node node /usr/bin/nodejs 99
Tom Hale
quelle
Dies ist der richtige Debian-Weg.
Tonin
6

Als ich gulp benutzte, bekam ich diesen Fehler.

~$ gulp

/ usr / bin / env: 'node': Keine solche Datei oder kein solches Verzeichnis

Dies wurde durch Ausführen des folgenden Befehls entfernt. Beachten Sie, dass das Verzeichnis / usr / bin über alle Berechtigungen verfügt.

~$ ln -s /usr/bin/nodejs /usr/bin/node

das funktioniert bei mir ..

Naveen Gupta
quelle
5

Abhängig davon, wie Sie Ihren Knoten installiert haben, befindet er sich möglicherweise die meiste Zeit nicht in / usr / bin /. In meinem Fall habe ich nvm für die Installation verwendet, sodass sich mein Knoten in ./nvm/versions befand.

Mit diesem Befehl habe which nodeich den Pfad herausgefunden, aber um die Arbeit zu erleichtern, können Sie diesen Befehl ausführen.

nodepath=$(which node); sudo ln -s $nodepath /usr/bin/node

Mit dem obigen Befehl wird der Standort Ihres Knotens ermittelt und ein Link für Sie erstellt.

akisoft
quelle
5

Hierfür gibt es zwei Lösungen:

a) Stellen Sie Ihre PATH-Variable so ein, dass sie "/ usr / local / bin" enthält.

export PATH="$PATH:/usr/local/bin"

b) Erstellen Sie einen Symlink zu "/ usr / bin", der sich bereits in Ihrem PATH befindet

ln -s /usr/bin/nodejs /usr/bin/node

Ich hoffe, es hilft.

Pavel
quelle
4

Während ln -sdie offensichtlich einfachste Lösung ist, eine Erklärung:

Aufgrund eines Konflikts mit einem anderen Paket wird die ausführbare Datei aus den Ubuntu-Repositorys als nodejs anstelle von node bezeichnet. Beachten Sie dies, wenn Sie Software ausführen.

Dieser Hinweis wird bei der Installation angezeigt sudo apt-get install nodejs.

Ein anderes bekanntes Tool (ich weiß nicht, was es tut. Obwohl es Ubuntu-Repositorys bekannt ist, wird es in 16.04 nicht standardmäßig installiert) belegt diesen Namespace.

Wäre schön gewesen, wenn Ubuntu einen Rat gegeben hätte, wie man dies "sauber" behebt, wenn nicht von Hand, was das Paket sonst tun würde. (Eine Kollision bleibt eine Kollision ... wenn + wann sie auftreten würde)

Frank Nocke
quelle
1
@ Tom-Hale Antwort ist der Ubuntu-Weg dafür. Sie verwenden Alternativen, um den richtigen Knoten anzugeben
kervin
2
sudo PATH="$PATH:/usr/local/bin" npm install -g <package-name>
KARTHIKEYAN.A
quelle
2

Für meinen Fall Link hat nicht funktioniert wie folgt

ln -s / usr / bin / nodejs / usr / bin / node

Sie können jedoch / usr / local / bin / lessc als root öffnen und die erste Zeile von node zu nodejs ändern.

- #! / usr / bin / env Knoten

+ #! / usr / bin / env nodejs

Tanvir Ahmad
quelle
2

Befolgen Sie diese Befehle, um das Problem zu beheben.

In einem Terminal:

  1. Bereinigen Sie den gesamten NPM-Cache:

    $ sudo npm cache clean -f
  2. sudo npm install -g n
  3. Installieren Sie die neueste stabile Version von Node.js:

    sudo n stable

Jetzt wurde die neueste Version von Node.js installiert. Überprüfen Sie die Version mit:

node -v
Anandhu Raj
quelle
0

Benennen Sie einfach den Befehl oder den Dateinamen ln -s /usr/bin/nodejs /usr/bin/nodemit diesem Befehl um

Shalauddin Ahamad Shuza
quelle
0

Für mich hat die akzeptierte Antwort noch nicht funktioniert. Ich habe wie hier vorgeschlagen angefangen:

ln -s /usr/bin/nodejs /usr/bin/node

Danach wurde folgende Fehlermeldung angezeigt:

/usr/local/lib/node_modules/npm/bin/npm-cli.js:85 let notifier = require ('update-notifier') ({pkg}) ^^^

SyntaxError: Blockdeklarationen (let, const, function, class) werden außerhalb des strengen Modus bei exports.runInThisContext (vm.js: 53: 16) bei Module._compile (module.js: 374: 25) bei Object noch nicht unterstützt. Module._extensions..js (module.js: 417: 10) bei Module.load (module.js: 344: 32) bei Function.Module._load (module.js: 301: 12) bei Function.Module.runMain ( module.js: 442: 10) beim Start (node.js: 136: 18) bei node.js: 966: 3

Die Lösung bestand darin, die neueste Version des Knotens von https://nodejs.org/en/download/ herunterzuladen .

Dann habe ich:

sudo tar -xf node-v10.15.0-linux-x64.tar.xz --directory /usr/local --strip-components 1

Jetzt war das Update endlich erfolgreich: npm -vgeändert von 3.2.1 auf 6.4.1

Blackbam
quelle