it-swarm.com.de

Nodejs kann installiertes Modul unter Windows nicht finden?

Ich lerne nodejs im Moment unter Windows. Mehrere Module werden global mit npm.cmd installiert, und nodejs konnte die installierten Module nicht finden. Nehmen Sie zum Beispiel Jade,

npm install jade -g

Jade ist im Verzeichnis "C:\Program Files (x86)\nodejs\node_modules" installiert, der folgende Code schlägt jedoch mit einem "Cannot find module 'jade'"-Fehler fehl.

var jade = require('jade');

Der Code wird jedoch erfolgreich ausgeführt, wenn Jade lokal installiert ist (ohne die Option -g in npm). Ich möchte keine lokal installierten Module verwenden, es ist eine Verschwendung von Festplattenspeicher für mich. Kann mir jemand helfen, dass die global installierten Module unter Windows funktionieren?

215
Cosmore

Fügen Sie eine Umgebungsvariable mit dem Namen NODE_PATH hinzu und setzen Sie sie auf %USERPROFILE%\Application Data\npm\node_modules (Windows XP), %AppData%\npm\node_modules (Windows 7/8/10) oder wo immer npm die Module auf Ihrem Windows-Betriebssystem installiert. Um dies ein für alle Mal zu erledigen, fügen Sie diese als Systemvariable auf der Registerkarte Erweitert des Dialogfelds Systemeigenschaften hinzu (führen Sie control.exe sysdm.cpl,System,3 aus).

Eine schnelle Lösung in Windows 7+ ist, einfach auszuführen:

rem for future
setx NODE_PATH %AppData%\npm\node_modules
rem for current session
set NODE_PATH=%AppData%\npm\node_modules

Es ist erwähnenswert, dass NODE_PATH nur beim Importieren von Modulen in Node-Apps verwendet wird. Wenn Sie die global installierten Binärdateien von Modulen in Ihrer CLI verwenden möchten, müssen Sie sie auch zu Ihrer PATH hinzufügen, jedoch ohne node_modules-Teil (z. B. %AppData%\npm in Windows 7/8/10).


Alte Geschichte

Ich bin neugierig auf node.js selbst, also kann ich nicht ganz recht haben, aber aus meiner Erfahrung klappt es so:

  1. -g ist keine Möglichkeit, globale Bibliotheken zu installieren, es ist nur eine Möglichkeit, sie im Systempfad zu platzieren, sodass Sie sie von der Befehlszeile aus aufrufen können, ohne den vollständigen Pfad darauf zu schreiben. Es ist zum Beispiel nützlich, wenn die Knoten-App lokale Dateien wie less konvertiert. Wenn Sie sie global installieren, können Sie sie in einem beliebigen Verzeichnis verwenden.
  2. node.js selbst schaute sich das globale Verzeichnis von npm nicht an, es verwendet einen anderen Algorithmus, um die erforderlichen Dateien zu finden: http://nodejs.org/api/modules.html#modules_file_modules (im Prinzip werden alle Ordner in den Pfad, beginnend mit dem aktuellen Ordner für node_modules und prüft ihn).

Siehe ähnliche Frage für weitere Details: Wie installiere ich ein Modul global mit npm?

318
Alexey Ivanov

wenn Sie sich auf der Windows7-Plattform befinden, sollten Sie den NODE_PATH folgendermaßen ändern: %AppData%\npm\node_modules

33
Jack

Ich weiß, dass ich einen Zombie wecken kann, aber ich denke, dass dies immer noch ein Problem ist. Wenn Sie globalen Zugriff auf Knotenmodule unter Windows 7 benötigen, müssen Sie dies Ihrem globalen Variablenpfad hinzufügen: 

C:\Users\{USER}\AppData\Roaming\npm

Wichtig: Nur dies ohne den node_modules-Teil brauchte eine halbe Stunde, um das zu sehen.

24
Vitaliy Terziev

Damit es unter Windows 10 funktioniert, habe ich es gelöst, indem ich den Ordner %USERPROFILE%\AppData\Roaming\npm zu meinem PFAD hinzugefügt habe. Ich habe \node_modules so angehängt: %USERPROFILE%\AppData\Roaming\npm\node_modules\ hat bei mir nicht funktioniert.

15
Andi-lo

Ich zitiere einfach aus dem blog-Beitrag dieses Knotens ...

Im Allgemeinen lautet die Faustregel:

  • Wenn Sie etwas installieren, das Sie in Ihrem Programm verwenden möchten, verwenden Sie "request" ("was auch immer") und installieren Sie es lokal im Stammverzeichnis von dein Projekt.
  • Wenn Sie etwas installieren, das Sie in Ihrer Shell, über die Befehlszeile oder etwas anderes verwenden möchten, installieren Sie es global, so dass es Binärdateien enden in Ihrer PATH-Umgebungsvariablen.

...

Natürlich gibt es einige Fälle, in denen Sie beides tun möchten . Coffee-script und Express sind gute Beispiele für Apps, die über ein .__ verfügen. Befehlszeilenschnittstelle sowie eine Bibliothek. In diesen Fällen können Sie Führen Sie einen der folgenden Schritte aus:

  1. Installieren Sie es an beiden Stellen. Im Ernst, haben Sie so wenig Speicherplatz? Es ist wirklich gut. Sie sind winzige JavaScript-Programme.
  2. Installieren Sie es global und dann npm link coffee-script oder npm link express (wenn Sie sich auf einer Plattform befinden, die symbolische Links unterstützt.) Dann Sie müssen nur die globale Kopie aktualisieren, um alle Symlinks als .__ zu aktualisieren. Gut.
12
soemarko

Um es kurz zu machen, verwenden Sie npm link jade in Ihrem App-Verzeichnis.

10
sntran

Versuchte, Umgebungsvariablen hinzuzufügen/zu bearbeiten und zu folgern, dass:

  1. Bearbeiten/Hinzufügen User variables (der oberen Box) anstelle von System variables (des unteren Teils); Ansonsten müssen Sie "als Administrator ausführen", damit es funktioniert.
  2. Hängen Sie ;%AppData%\npm an Path an, um es als Befehlszeilentool zu verwenden (falls dies unterstützt wird, wie jshint und grunt-cli).
  3. Erstellen Sie NODE_PATH und legen Sie %AppData%\npm\node_modules fest, um require('<pkg_name>') in Skripts zu installieren, ohne es im Projektverzeichnis zu installieren. (Es wird jedoch npm link vorgeschlagen für diese Anforderung, wenn Sie unter OS mit mklink arbeiten, z. B. Vista oder neuer.)

Test Umgebung:

  • Win 7 (Ent., 64-Bit, SP1), Node.js 4.2.4, npm 2.14.12
  • Win 8.1 (Ent., 64-Bit), Node.js 0.10.30, npm 1.4.21
8
Kong Kao

Ich bin unter Windows 7 auf dieses Problem gestoßen

npm install -g gulp

als Administrator, während Sie als normaler Benutzer angemeldet sind.

Lösung: Wenn Sie dieselbe Installation als normaler Benutzer ausführen (nicht "als Admin als Cmd ausführen"), war alles in Ordnung. Ich denke, es hängt mit dem Standardinstallations- und -suchpfad zusammen.

5
Sebastian

Ich hatte eine schreckliche Zeit, globale Module zum Laufen zu bringen. Schließlich habe ich C:\Users\yourusername\AppData\Roaming\npm explizit zu der PATH-Variablen unter Systemvariablen hinzugefügt. Ich musste diese Variable auch vor der node_s-Pfadvariable in der Liste haben.

Ich verwende Windows 10.

5
John Galt

Für Windows sagten alle, Sie sollten Umgebungsvariablen für nodejs und npm-Module festlegen, aber wissen Sie warum? Bei einigen Modulen verfügen sie über ein Befehlszeilentool. Nach der Installation des Moduls gibt es [Modul]. cmd -Datei in C:\Programme\nodejs und wird für den Start im Fensterbefehl verwendet. Wenn Sie also den Pfad mit der cmd-Datei nicht zu den Umgebungsvariablen % PATH% hinzufügen, werden Sie sie nicht erfolgreich über das Befehlsfenster starten.

3
Kiki.J.Hu

Von meiner Erfahrung mit win8.1 installiert npm Module auf C:\Users\[UserName]\AppData\Roaming\npm\node_modules Dumply durchsucht sie jedoch nach C:\Users\[UserName]\node_modules.

Ein einfaches Lösungsreferenzmodul in der Anwendung über den vollständigen Pfad:

var jsonminify = require("C:/Users/Saulius/AppData/Roaming/npm/node_modules/jsonminify");
3
Saulius

Ich hatte das gleiche Problem und versuchte, Bower mit npm install -g bower zu installieren.

Ich denke, das lag daran, dass node von einem anderen Benutzer installiert wurde, nicht von mir.

Ich habe den Knoten deinstalliert und dann neu installiert. Während der Installation sah ich diesen Text für die Option Zu PATH hinzufügen> npm-Module:

Nachricht bei der Knoteninstallation

 enter image description here

Nach der Knoteninstallation habe ich npm install -g bower erneut ausgeführt. Und jetzt funktioniert die Laube.

Sicher ist es nicht notwendig, Knoten mit eigenem Benutzer neu zu installieren, wie ich. Die Lösung muss über die Variablen NODE_PATH oder PATH erfolgen, wie von anderen Benutzern erläutert.

Dies ist nur ein Hinweis darauf, dass dieses Problem nur auftritt, wenn der Knoten von einem anderen Benutzer installiert wurde (oder wenn während der Installation die Option Zu PATH hinzufügen> npm-Module nicht markiert wurde.

1
Gregorio

Ich bin über diese Frage gestolpert, weil ich node.js mit Visual Studio 2015 auf meinem neuen Computer mit Windows 10 verwenden möchte. Ich habe node.js unter Windows 7 und 8 und 8.1 verwendet. Nie ein Problem. Knoten.js ein Modul finden. Ich verwende eine ältere node.js 0.10.39, weil ich diese Version wegen des seriellen und des RFXCOM-Moduls verwenden muss.

Die Antwort für Windows 10 besteht darin, den NODE_PATH in den Umgebungsvariablen mit C:\Users\User\node_modules festzulegen.

1
wetlip

Für Windows 10 musste ich lokal im Ordner gulp installieren:

C:\Benutzer\Mein Konto\AppData\Roaming\npm\node_modules

npm install gulp

Dieses Problem wurde behoben. "Schluck wird nicht erkannt".

1
Bizz Websites

Alternativ können Sie ~/.npmrc right prefix hinzufügen. Ich habe C:\Program Files\nodejs für 64 Win7.

1
dmi3y

Alle oben genannten Antworten haben bei mir nicht funktioniert. Das einzige, was letztendlich funktionierte, war das Hinzufügen von% AppData%\npm zur Umgebungsvariablen Path, UND um die beiden ng-Dateien in C:\Programme\nodejs zu löschen.

Die ng-Pakete wurden nicht in C:\Programme\nodejs\node_modules installiert, sodass es offensichtlich nicht funktionieren würde, die ng-Binärdatei aus dem nodejs-Verzeichnis zu verwenden.

Ich bin nicht sicher, warum in diesem Verzeichnis gesucht wurde, da ich bereits die Umgebungsvariable PATH .npmrc im Verzeichnis C:\Users\MyUser konfiguriert habe. Es wurde versucht, Systemvariablen und/oder NODE_PATH hinzuzufügen

0
devqon

Laden Sie den Knoten einfach von this herunter und installieren Sie ihn erneut. Dadurch werden alle Pfadprobleme behoben. 

Vergessen Sie nicht, die Eingabeaufforderung oder das Terminal erneut zu starten.

0
Mahendra