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?
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.
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
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
In meinem Fall wurde das Problem durch [Installation von nodejs-legacy][1] gelöst.
sudo apt-get install nodejs-legacy
Einfach tun
$ sudo apt-get install nodejs-legacy
Und es wird anfangen zu funktionieren.
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
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.
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)
Hierfür gibt es zwei Lösungen:
a) Setzen Sie Ihre PATH-Variable so, dass sie "/usr/local/bin" 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.
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.
Befolgen Sie diese Befehle, um das Problem zu beheben.
In einem Terminal:
Bereinigen Sie den gesamten NPM-Cache:
$ sudo npm-Cache sauber -f
sudo npm installieren -g n
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
sudo PATH="$PATH:/usr/local/bin" npm install -g <package-name>
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
Benennen Sie einfach den Befehl oder Dateinamen ln -s /usr/bin/nodejs /usr/bin/node
mit diesem Befehl um
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.