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

85

Ich habe die Knoten js und npm über apt-get install und alle Abhängigkeiten installiert und dann browserify installiert

npm install browserify -g

Es durchläuft den Prozess und scheint korrekt installiert zu sein, aber wenn ich versuche, ein einfaches Bundle für diese exemplarische Vorgehensweise zu erstellen

Ich bekomme den Fehler:

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

Geben Sie hier die Bildbeschreibung ein

Eduardo Dennis
quelle
hmm du solltest prüfen ob sich die ausführbare Datei des Knotens in / usr / bin oder / usb / bin / env befindet, zumindest ist dies ein betriebsspezifisches Problem. Möglicherweise können Sie dieses Problem lösen, indem Sie browserify local installieren.
Bodokaiser
Meine browserfähige ausführbare Datei befindet sich in / usr / local / bin /, aber ruft sie etwas anderes auf, bei dem der Pfad durcheinander ist?
Eduardo Dennis
3
ah du musst nodejs mit knoten auf ubuntu symlinken. Ubuntu installiert Node als NodeJS, dann müssen Sie etwas wie "ln -s / usr / bin / Nodejs / usr / bin / Node" tun, damit das System es auch als Node findet
Bodokaiser
1
das hat es gelöst: -PI habe mir in der letzten Stunde den Kopf gebrochen. Kannst du bitte das Antwortformat eingeben, um es zu akzeptieren?
Eduardo Dennis
1
Ich bin froh, dass es funktioniert hat. Ich bin mir nicht sicher, ob es wirklich dieses Problem ist. Deshalb habe ich es zuerst kommentiert :)
Bodokaiser

Antworten:

246

Einige Linux-Distributionen installieren nodejs nicht als ausführbare Datei "node", sondern als "nodejs".

In diesem Fall müssen Sie manuell eine Verknüpfung zu "Knoten" herstellen, da viele Pakete nach der Binärdatei "Knoten" programmiert werden. Ähnliches tritt auch bei "python2" auf, das nicht mit "python" verknüpft ist.

In diesem Fall können Sie einen einfachen Symlink erstellen. Für Linux-Distributionen, die Paket-Binärdateien installieren, können /usr/binSie dies tun

ln -s /usr/bin/nodejs /usr/bin/node
Bodokaiser
quelle
5
Dies ist nicht die Lösung für Ubuntu 14.04, da /usb/sbin/nodees sich um ax24-node handelt (unabhängig von nodejs). Nur symbolische Verknüpfung zu /usr/bin/nodenicht, da /usr/sbin/nodekommt zuerst in dem$PATH
Gareth
8
Der richtige Weg, dies zu lösen, ist zu verwenden update-alternatives. siehe meine Antwort hier stackoverflow.com/a/24592328/454615
airtonix
1
Eigentlich mehr darüber nachdenken ... das Verknüpfen von Binärdateien wie diesen ist eine großartige Angewohnheit, wenn Sie Ihr System beschädigen möchten.
Airtonix
Ja, ich habe bemerkt, dass es auf subtile Weise kaputt geht. Haben Sie eine bessere Lösung gefunden?
Eduardo Dennis
1
@EduardoDennis ja, verwenden update-alternatives. es existiert für genau diese Situationen.
Airtonix
52

Neue Antwort:

  1. Deinstallieren Sie alle NodeJS-Pakete, die Sie über Ihren Systempaket-Manager (dnf, apt-get usw.) installiert haben, und löschen Sie alle albernen Symlinks, die Sie bei jedem Upgrade neu erstellt haben (lol).
  2. NVM installieren,
  3. Verwenden Sie nvm, um nodejs zu installieren: nvm install 6

Alte Antwort:

Die Rede davon, Symlinks zu erstellen oder ein anderes Knotenpaket zu installieren, ist falsch und nicht nachhaltig.

Der richtige Weg, dies zu lösen, ist:

  1. Installieren Sie einfach das nodejs-Paket mit apt-get, wie Sie es bereits haben
  2. Verwenden update-alternativesSie diese Option, um anzugeben, für welche NodeJS-Binärdatei verantwortlich ist#!/usr/bin/env node

Wie so:

sudo apt-get install nodejs
sudo update-alternatives --install /usr/bin/node nodejs /usr/bin/nodejs 100

Dies wird jetzt durch Paket-Upgrades, Dist-Upgrades usw. nachhaltig.

airtonix
quelle
Dies ist eine Lösung für mein Problem stackoverflow.com/questions/26155795/…
Alon Carmel
Danke, tolle Lösung, der Trick mit Symlinks wird am häufigsten im Internet wiederholt, hat aber bei mir nicht funktioniert.
Emilia Tyl
Die richtige Antwort lautet jetzt NVM unter Linux und Nodist unter Windows.
Airtonix
35

Ausführen apt-get install nodejs-legacy.

Bestimmte Linux-Distributionen haben den Binärnamen von node.js geändert, sodass er mit vielen node.js-Paketen nicht kompatibel ist. Das Paket nodejs-legacybietet einen Symlink, um dies zu beheben.

Alex
quelle
2
Dies ist die Lösung für Ubuntu 14.04, da /usb/sbin/nodees sich um ax24-node handelt (unabhängig von nodejs). Nur symbolische Verknüpfung zu /usr/bin/nodenicht, da /usr/sbin/nodekommt zuerst in dem$PATH
Gareth
Hat mir geholfen. Vielen Dank!
Lapidus
apt-get install nodejs-Legacy. sagt für Windows-Benutzer 'apt-get' wird nicht als interner oder externer Befehl, bedienbares Programm oder Batch-Datei erkannt.
Swift
7

Sie können Nodejs auch mit NVM oder Nodejs Version Manager installieren . Die Verwendung eines Versionsmanagers bietet viele Vorteile . Eine davon ist, dass Sie sich über dieses Problem keine Sorgen machen müssen.


Anleitung:


sudo apt-get update
sudo apt-get install build-essential libssl-dev

Sobald die erforderlichen Pakete installiert sind, können Sie das nvm-Installationsskript von der GitHub-Seite des Projekts herunterladen. Die Versionsnummer kann unterschiedlich sein, aber im Allgemeinen können Sie sie mit der folgenden Syntax herunterladen und installieren:

curl https://raw.githubusercontent.com/creationix/nvm/v0.16.1/install.sh | sh

Dadurch wird das Skript heruntergeladen und ausgeführt. Die Software wird in einem Unterverzeichnis Ihres Home-Verzeichnisses unter installiert ~/.nvm. Außerdem werden Ihrer ~/.profileDatei die erforderlichen Zeilen hinzugefügt, um die Datei zu verwenden.

Um Zugriff auf die NVM-Funktionalität zu erhalten, müssen Sie sich abmelden und erneut anmelden, oder Sie können die Datei ~ / .profile als Quelle verwenden, damit Ihre aktuelle Sitzung über die Änderungen informiert ist:

source ~/.profile

Nachdem Sie nvm installiert haben, können Sie isolierte Node.js-Versionen installieren.

Um herauszufinden, welche Versionen von Node.js für die Installation verfügbar sind, können Sie Folgendes eingeben:

nvm ls-remote
. . .

v0.11.10
v0.11.11
v0.11.12
v0.11.13
v0.11.14

Wie Sie sehen können, ist die neueste Version zum Zeitpunkt dieses Schreibens v0.11.14. Sie können das installieren, indem Sie Folgendes eingeben:

nvm install 0.11.14

Normalerweise wechselt nvm zur Verwendung der zuletzt installierten Version. Sie können nvm ausdrücklich anweisen, die gerade heruntergeladene Version zu verwenden, indem Sie Folgendes eingeben:

nvm use 0.11.14

Wenn Sie Node.js mit nvm installieren, wird die ausführbare Datei als Knoten bezeichnet. Sie können die aktuell von der Shell verwendete Version anzeigen, indem Sie Folgendes eingeben:

node -v

Das Comeplete-Tutorial finden Sie hier

Eduardo Dennis
quelle
Ja, plus eins für Umgebungsversionsmanager. definitiv eine viel bessere Antwort als meine, obwohl unsere beide der richtige Weg sind, dies zu tun. Ich werde sagen, dass nvm eher auf interaktive Workstations als auf Produktionsserver ausgerichtet ist (aber ich kann nicht verstehen, warum man es dort nicht verwenden kann) ... persönlich bin ich eher geneigt, Docker-Images in der Produktion zu verwenden.
Airtonix
0

Ich scheine das gleiche Problem zu haben, wenn ich Atom unter Linux baue.

sudo apt-get install nodejs-dev

Fix meine Frage. Hoffentlich hilfreich für Sie.

Kangear
quelle
0

Wenn Sie keinen Symlink erstellen möchten, können Sie dies tun. arbeitet in Ubuntu

#!/usr/local/bin/node --harmony

Das Harmony-Tag ist für die neue ECMAscript-Harmonie

user2290820
quelle
0
  1. Führen Sie den Befehl aus which node Das Ergebnis ist etwas

    /home/moh/.nvm/versions/node/v8.9.4/bin/node

  2. Kopieren Sie den Pfad, den Sie oben erhalten haben, und führen Sie den Befehl in Schritt 3 aus.

  3. ln -s /home/moh/.nvm/versions/node/v8.9.4/bin/node /usr/bin/node

Moh .S
quelle
-1

Sie müssen "nodejs" und nicht "node" aufrufen. Um dies zu überprüfen, geben Sie node -vin die Shell ein: Wenn nichts gefunden wird, versuchen Sie es nodejs -v. Wenn dadurch eine Versionsnummer angezeigt wird, lautet der Befehl, den Sie verwenden sollten, nodejsund nicht node. Daher müssen Sie den Aufruf von browserify in Ihrem Skript von nodeauf nodejs(wie unten gezeigt) ändern : Ersetzen

#!/usr/bin/env node

mit

#!/usr/bin/env nodejs

Möglicherweise müssen Sie das Skript auch als Superuser öffnen.

user51324
quelle