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?

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 ).


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

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

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




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

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

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 ..


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.


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.


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)


1
@ Tom-Hale Antwort ist der Ubuntu-Weg dafür. Sie verwenden Alternativen, um den richtigen Knoten anzugeben
kervin


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


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


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

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.