Das Einschließen des Pfads für den Knoten binär npm wurde mit ausgeführt

73

Windows, VSC, Running npm starthaben das verstanden

npm WARN-Lebenszyklus Die für Skripts verwendete Knotenbinärdatei lautet C: \ Programme \ nodejs \ node.exe, aber npm verwendet C: \ irgendwo \ AppData \ Roaming \ npm \ Knotenmodule \ Knoten \ bin \ Knoten.exe selbst. Verwenden Sie die --scripts-prepend-node-pathOption, um den Pfad für den Knoten anzugeben, mit dem binäre npm ausgeführt wurde.

Ich verstehe, dass meine lokale Version von der in der PATH-Variablen (C: \ Programme ...) abweicht. Wie verfahren Sie, um es zu verwenden --scripts-prepend-node-path?

Ich einen Streich gespielt durch das Ersetzen C:\Program Files\nodejsmit C:\somewhere\AppData\Roaming\npm\node_modules\node\binin PATH - Variable, es ist abholen , dass neue node.exe bekam but there is no node binary in the current PATH. Empfehlen Sie erneut, die --scrip ts-prepend-node-pathOption zu verwenden, um den Pfad für den Knoten einzuschließen, mit dem binäre npm ausgeführt wurde

Jeb50
quelle

Antworten:

128

Wie gesagt, das Ersetzen des tatsächlichen Pfads in der PATH-Systemvariablen hat das Problem nicht vollständig behoben, es wurde immer noch beanstandet, dass Binärdateien fehlen. Fand dies löste das there is no node binary in the current PATHProblem. Den ursprünglichen Pfad wiederhergestellt, versucht, dass es funktioniert.

Erstellen Sie einfach eine Datei im Stammordner der App mit dem Namen .npmrc und fügen Sie diese Zeile ein:

scripts-prepend-node-path=true

Jeb50
quelle
3
Ich weiß nicht warum, aber das hat bei mir funktioniert, aber die npm config set scripts-prepend-node-path autounten stehende Befehlsantwort nicht. Vielen Dank.
HartleySan
80

Hier ist ein anderer Weg, der funktioniert: npm config set scripts-prepend-node-path auto

Godbout
quelle
Da das Problem bei verschiedenen Projekten auftritt, ist dies die bevorzugte Antwort. Sie müssen also nicht in jedem Projekt eine .npmrc-Datei erstellen. Dies wird in der akzeptierten Antwort vorgeschlagen.
Kas
2
Wenn Sie dies als akzeptierte Antwort akzeptieren, da a) es funktioniert (in allen meinen Umgebungen) und b) wie @kas betont hat, erleichtert es das Leben.
Shawn Spencer
Stimmen Sie mit @ShawnSpencer überein, dies ist eine programmatische Lösung
Egeshi
18

Konflikt zwischen Ihrer Knoten-Binärdatei und Ihrer npm


Falls der Fehler ungefähr so ​​aussieht:

npm versucht, denselben Knoten zu verwenden wie den, mit dem es sich selbst ausführt.

Lösen Sie diesen Konflikt, indem Sie das Knotenverzeichnis zu Ihrem hinzufügen PATH:

npm config set scripts-prepend-node-path true

Aus der npm-Dokumentation :

npm run setzt die Umgebungsvariable NODE auf den ausführbaren Knoten, mit dem npm ausgeführt wird. Wenn der Pfad --scripts-prepend-node übergeben wird, wird das Verzeichnis, in dem sich der Knoten befindet, zum PATH hinzugefügt

Lior Elrom
quelle
6

Mit diesem Problem in Visual Studio 2017 habe ich VS stattdessen angewiesen, immer das von nodejs.org installierte NodeJS zu verwenden, anstatt das in Visual Studio eingefrorene NodeJS. (Der mit VS2015 gelieferte ist so alt, dass er nicht mehr wirklich funktioniert.)

Gehen Sie in Visual Studio zu TOOLS> OPTIONS> suchen Sie nach EXTERNAL WEB TOOLS> und stellen Sie sicher, dass "C: \ Programme \ nodejs" (oder wo auch immer nodejs.org es installiert hat) zuerst in der Liste der Pfade steht, und fügen Sie es gegebenenfalls hinzu.

Ron Newcomb
quelle