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

I'm versucht, nodeJs in meinem Ubuntu 14.04 zu installieren, um GruntJs zu verwenden.

Ich habe über Ubuntu andere Art und Weise zu tun (Probleme?) gelesen, so ist dies, was ich getan habe, um es zu installieren:

sudo apt-get install npm

sudo npm install -g grunt-cli

Nachdem ich grunt eingegeben habe, habe ich die Fehlermeldung erhalten:

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

Also, ich'habe es versucht:

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

sudo apt-get install -y nodejs

sudo apt-get update

Und wieder versucht, und immer noch die Fehlermeldung, ich've versucht:

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

sudo apt-get install -y nodejs

Ich'habe diese Meldung erhalten:

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

Ich habe vorsichtshalber eine Bereinigung versucht:

sudo apt-get autoremove

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

Was sollte ich tun?

Lösung

Ich habe die Antwort gefunden. Nur für den Fall, dass es jemandem hilft, poste ich es hier:

Ein Symlink löst das Problem: ln -s /usr/bin/nodejs /usr/bin/node (Mein Dank und +1 Stimme an bodokaiser).

HINWEIS: Ich denke, dieser Beitrag ist kein exaktes Duplikat, denn dieser Beitrag war eher eine browserifizierte Frage.

Kommentare (16)

Das Problem liegt nicht an der Version von Node. Stattdessen ist es die Art und Weise, wie NodeJS standardmäßig in Ubuntu installiert wird. Wenn Sie eine Node-Anwendung in Ubuntu ausführen, müssen Sie nodejs somethign.js statt node something.js ausführen.

Der Name der Anwendung, die im Terminal aufgerufen wird, ist also nodejs und nicht node. Deshalb braucht man einen Symlink, um alle Befehle, die als node empfangen werden, einfach an nodejs weiterzuleiten.

ln -s /usr/bin/nodejs /usr/bin/node
Kommentare (2)

Ich denke, Sie sollten die neueste Node-Version aktualisieren.

sudo npm cache clean -f
sudo npm install -g n
sudo n stable
Kommentare (6)

Wenn Sie mit dem Befehl nodejs auf einen Knoten auf einem Ubuntu-Terminal zugreifen können, kann dieses Problem einfach gelöst werden, indem -Erzeugung einer symbolischen Verknüpfung von nodejs und node unter Verwendung

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

und dies könnte das Problem lösen

Kommentare (1)

In meinem Fall wurde das Problem durch [Installation von nodejs-legacy][1] gelöst.

sudo apt-get install nodejs-legacy

[1]: https://nodejs.org/en/download/package-manager/

Kommentare (0)

Einfach tun

$ sudo apt-get install nodejs-legacy

Und es wird anfangen zu funktionieren.

Kommentare (0)

I'ich habe festgestellt, dass es sich dabei oft um einen Fehler mit falscher Namensgebung handelt. Wenn Sie von einem Paketmanager installieren, wird Ihr Bin möglicherweise nodejs genannt, so dass Sie es einfach wie folgt symbolisch verlinken müssen

ln -s /usr/bin/nodejs /usr/bin/node
Kommentare (2)

Wenn Sie bereits nodejs installiert haben (prüfen Sie mit which nodejs) und don't ein anderes Paket installieren wollen, können Sie als root:

update-alternatives --install /usr/bin/node node /usr/bin/nodejs 99
Kommentare (1)

Als ich den Schluck verwendet habe, bekam ich diesen Fehler.

~$ gulp

/usr/bin/env: 'Knoten': Keine solche Datei oder Verzeichnis

Dies wurde durch die Ausführung des folgenden Befehls entfernt. Sie müssen bedenken, dass das Verzeichnis /usr/bin alle Berechtigungen hat.

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

das funktioniert bei mir.

Kommentare (0)

Während ln -s die offensichtlich einfachste Lösung ist, ein Stück Erklärung:

Wegen eines Konflikts mit einem anderen Paket ist die ausführbare Datei aus dem

Ubuntu-Repositories wird nodejs statt node genannt. Behalten Sie dies in

beachten, wenn Sie Software ausführen.

Dieser Rat kommt auf, wenn Sie sudo apt-get install nodejs installieren.

Also irgendein anderes bekanntes Werkzeug (ich weiß nicht't weiß, was es macht. Obwohl es den ubuntu-Repositorys bekannt ist, wird es in 16.04 nicht standardmäßig installiert) diesen Namensraum belegt.

Wäre nett gewesen, wenn Ubuntu einen Rat angeboten hätte, wie man dies 'sauber' beheben könnte, wenn nicht von Hand, was sonst das Paket tun würde. (eine Kollision bleibt eine Kollision... wenn+wenn sie auftreten würde)

Kommentare (1)

Hierfür gibt es zwei Lösungen:

a) Setzen Sie Ihre PATH-Variable so, dass sie "/usr/local/bin&quot einschließt;

exportieren Sie PATH="$PATH:/usr/local/bin"

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

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

Ich hoffe, es hilft.

Kommentare (0)

Abhängig davon, wie Sie Ihren Knoten installiert haben, ist er meistens nicht in /usr/bin/, in meinem eigenen Fall habe ich nvm zur Installation verwendet, so dass mein Knoten in ./nvm/versions war.

Mit diesem Befehl which node habe ich 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.

Kommentare (0)

Befolgen Sie diese Befehle, um das Problem zu beheben.

In einem Terminal:

  1. Bereinigen Sie den gesamten NPM-Cache:

    $ sudo npm-Cache sauber -f
  2. sudo npm installieren -g n
  3. Installieren Sie die neueste stabile Version von Node.js:

    sudo n stabil

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

Knoten -v
Kommentare (0)
sudo PATH="$PATH:/usr/local/bin" npm install -g 
Kommentare (1)

Für meinen Fall verlinken Sie did NOT work wie folgt

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

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

-#!/usr/bin/env-Knoten

+#!/usr/bin/env nodejs

Kommentare (0)

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

Kommentare (0)

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

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

Nachdem ich dies getan hatte, erhielt ich den folgenden Fehler:

/usr/local/lib/node_modules/npm/bin/npm-cli.js:85

let notifier = require('update-notifier')({pkg}) ^^^

SyntaxFehler: Block-gezogene Deklarationen (let, const, Funktion, Klasse)

noch nicht außerhalb des Strict-Modus unterstützt

unter exports.runInThisContext (vm.js:53:16)

unter Modul._zusammenstellen (modul.js:374:25)

unter Objekt.Modul._Erweiterungen..js (Modul.js:417:10)

unter Modul.laden (modul.js:344:32)

unter Funktion.Modul._laden (modul.js:301:12)

unter Funktion.Modul.runMain (modul.js:442:10)

beim Start (node.js:136:18)

bei node.js:966:3

Die Lösung bestand darin, die aktuellste Version von node von https://nodejs.org/en/download/ herunterzuladen.

Das habe ich dann getan:

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

Nun war die Aktualisierung endlich erfolgreich: npm -v wurde von 3.2.1 auf 6.4.1 geändert.

Kommentare (0)