wake-up-neo.com

Express-Modul bei der Installation mit NPM nicht gefunden

Wenn ich versuche, die mit express erstellte app.js-Datei auszuführen, erhalte ich die folgende Fehlermeldung:

$ node app.js

node.js:134
        throw e; // process.nextTick error, or 'error' event on first tick
        ^
Error: Cannot find module 'express'
    at Function._resolveFilename (module.js:320:11)

Wenn ich express --version eingebe, erhalte ich eine Rückgabeanweisung von 2.3.3. Ich habe npm verwendet, um express zu installieren. Ich musste npm manuell mit diesen Anweisungen erstellen:

git clone http://github.com/isaacs/npm.git
cd npm
Sudo make install

Der Fehler ist Error: Cannot find module 'express'.

Muss ich nach der Installation von npm und express etwas tun, damit express die von npm erstellten Module sehen kann?

  • Mein Knoten ist Version: 0.4.6
  • Mein Express ist Version: 2.3.3
  • Meine npm ist Version: 1.0.6

Express ist global installiert. Ich habe das Flag -g verwendet, um es zu installieren.


Edit: Wenn ich "node -e require.paths" versuche, bekomme ich:

[ '/home/user/.node_modules',
  '/home/user/.node_libraries',
  '/usr/local/lib/node' ]

Daher erkennt der Knoten die npm-Installation nicht. Wie erhalte ich einen Knoten, um die npm-Installation zu erkennen?

46
Kelp

Ich hatte das gleiche Problem. Das hat aber für mich funktioniert:

Scheint, als ob npm (now?) Knotenmodule nach /usr/local/lib/node_modules/ und nicht nach /usr/local/lib/node/ installiert.

Was ich getan habe, war einfach alles von node_modules zu node: Sudo cp -r /usr/local/lib/node_modules/* usr/local/lib/node/ zu kopieren und jetzt scheint es für mich zu funktionieren.

Hoffe das hilft dir :-)

8
Gorm Casper
  • Express installieren

    npm install -g express

  • Erstellen Sie eine neue App

    express your_app

  • cD in App-Verzeichnis

    cd your_app

  • verwenden Sie den npm-Link, um die Module aufzulösen

    npm link express

68
just_a_dude

Verwenden Sie lokale Installationen für request () und globale Installationen für Befehlszeilenanwendungen.

Wenn Sie beides benötigen, verwenden Sie den Befehl npm link.

27
isaacs

Auf Ubuntu 12.04 müssen Sie export NODE_PATH=/usr/local/lib/node_modules zu Ihrer /.bashrc hinzufügen, um global installierte Module zu verwenden.

20
ezraspectre

Es scheint, dass, während npm für die Installation globaler Module in /usr/local/lib/node_modules aktualisiert wurde, Node's eigener require.paths diese Änderung noch nicht wiedergibt. 

Es gibt zwei sinnvolle Lösungen:

  1. Fügen Sie den folgenden Code am Anfang Ihrer Anwendung hinzu:

    require.paths.Push('/usr/local/lib/node_modules');
    
    • Pro: nicht-invasiv, einfach hinzuzufügen

    • Con: erfordert Disziplin, zukünftige Versionen des Knotens werden beschränken den Zugriff auf require.paths

  2. Führen Sie als root Folgendes aus:

    ln -s /usr/local/lib/node_modules /usr/local/lib/node
    
    • Pro: angemessen nichtinvasiv

    • Con: erfordert root, ändert linux fs und überlebt möglicherweise keine Systemaktualisierungen 

15
Rob Raisch

Was ist mit NODE_PATH=/usr/local/lib/node_modules in .bashrc oder .bash_profile ? Ich denke, es ist der richtige Weg.

6

Wenn Sie Windows verwenden, kann es vorkommen, dass die Umgebungsvariable NODE_PATH nicht gesetzt ist. Wenn Sie node fileName.js ausführen, werden die Bibliotheken daher nicht gefunden. 

Suchen Sie nach der Variablen in Ihrer Konsole, und erstellen Sie sie, falls nicht vorhanden. Geben Sie den Wert NODE_HOME\node_modules an, wobei NODE_HOME das Installationsverzeichnis Ihres Knotens ist. Auf diesem Pfad legt npm install jedes Modul beim Herunterladen ab.

2
Loïc

require.paths wurde entfernt, verwenden Sie stattdessen die Umgebungsvariable NODE_PATH.

2
vapour

Setze NODE_PATH=NODE_HOME\node_modules.

Ich benutze Windows 7 und es funktioniert gut.

2
buzzcoder

Der einfachste Weg, dies zu tun, ist, npm install aus dem Ordner Ihrer App auszuführen. Dies bedeutet, dass npm alles anschließen muss.

Es ist die letzte Anweisung nach express <appname>:

...
dont forget to install dependencies:
$ cd <appname> && npm install
1
orbiteleven

Ich habe gulp installiert und als ich diesen gulp-Befehl in der Befehlszeile ausführte, erhielt ich einen gulp: command not found-Fehler. Es schien, dass gulp in meinem lokalen Ordner installiert wurde, der /home/YOURUSERNAME/.node/lib/node_modules ist, und nicht im globalen npm-Ordner.

Sie können den npm-Stammordner überprüfen, indem Sie folgenden Befehl ausführen: npm root -g, der mein persönliches Verzeichnis /home/YOURUSERNAME/.node/lib/node_modules und nicht den erwarteten /usr/local/lib/node_modules zurückgegeben hat.

Sie können dies beheben, indem Sie den Befehl npm config set prefix /usr/local ausführen.

0
Bilal

für Mac-Benutzer

cd /usr/local/lib/node
Sudo ln -s ../node_modules/* ./$1
0
Soyoes

Für alle Probleme mit Express mit einem Mac-Computer:

Die Lösung ist: 

  1. chown für Ihren Benutzer den .npm-Ordner: 

    Sudo chown -R Webmaste /Users/webmaste/.npm/
    
  2. In Ihrem Testordner oder in Ihrem Ordner: 

    Sudo npm install -g [email protected]
    
  3. Rufen Sie den Express von Ihrem aktuellen Standort aus auf: 

    /usr/local/share/npm/bin/express
    
  4. Sudo cd . && npm install

  5. Endlich: 

    node app
    

die abschließende Nachricht in der Konsole sollte folgendermaßen aussehen: 

Express server listening on port 3000 in development mode

0
galo hernandez

Unter Linux ist es schließlich eine gute Möglichkeit, den Befehl zu verwenden: Sudo apt-get install node-express

Bei express 4 müssen wir jedoch den express-generator verwenden, um das App-Skelett zu erstellen, es mit 'npm install express-generator -g' installieren und dann den Befehl 'express myapp' ausführen. siehe auch install express

0
websoft102030