web-dev-qa-db-fra.com

Module Express introuvable lors de l'installation avec NPM

Lorsque j'essaie d'exécuter le fichier app.js créé par express, le message d'erreur suivant s'affiche:

$ 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)

Lorsque je tape express --version, je reçois une déclaration de retour de 2.3.3. J'ai utilisé npm pour installer express. Je devais faire manuellement npm en utilisant ces instructions:

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

L'erreur est Error: Cannot find module 'express'.

Dois-je faire quelque chose après l’installation de npm et d’express afin de rendre express voir les modules créés par npm?

  • Mon noeud est la version: 0.4.6
  • Mon express est la version: 2.3.3
  • Mon npm est la version: 1.0.6

Express est installé dans le monde entier. J'ai utilisé le drapeau -g pour l'installer.


Edit: Quand j'essaie "node -e require.paths" je reçois:

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

Donc, le noeud ne détecte pas l’installation de npm. Comment obtenir un noeud pour détecter l'installation de npm?

46
Kelp

J'ai eu le même problème. Cela a fonctionné pour moi si:

On dirait que npm (maintenant?) Installe les modules de noeud sur /usr/local/lib/node_modules/ et non pas /usr/local/lib/node/

Ce que j'ai fait était simplement de tout copier de node_modules vers node: Sudo cp -r /usr/local/lib/node_modules/* usr/local/lib/node/ et maintenant cela semble fonctionner pour moi.

J'espère que cela vous aide :-)

8
Gorm Casper
  • Installez Express

    npm install -g express

  • Créer une nouvelle application

    express your_app

  • cd dans le répertoire app

    cd your_app

  • utiliser le lien npm pour résoudre les modules

    npm link express

68
just_a_dude

Utilisez les installations locales pour require () et les installations globales pour les applications en ligne de commande.

Si vous avez besoin des deux, utilisez la commande npm link.

27
isaacs

Sur Ubuntu 12.04, vous devez ajouter le export NODE_PATH=/usr/local/lib/node_modules à votre /.bashrc pour utiliser les modules installés globalement.

20
ezraspectre

Il semble que bien que npm ait été mis à jour pour installer les modules globaux dans /usr/local/lib/node_modules, le propre require.paths du nœud ne reflète pas encore cette modification. 

Il y a deux solutions raisonnables:

  1. Ajoutez le code suivant en haut de votre application:

    require.paths.Push('/usr/local/lib/node_modules');
    
    • Pro: non invasif, facile à ajouter

    • Con: nécessite de la discipline, les versions futures du noeud will limiteront l'accès à require.paths

  2. En tant que root, exécutez:

    ln -s /usr/local/lib/node_modules /usr/local/lib/node
    
    • Pro: raisonnablement non invasif

    • Con: nécessite la racine, modifie le système Linux, pourrait ne pas survivre aux mises à jour du système 

15
Rob Raisch

Qu'en est-il de NODE_PATH=/usr/local/lib/node_modules dans .bashrc ou .bash_profile ? Je pense que c'est la vraie façon correcte.

6
Pier Paolo Ramon

Si vous utilisez Windows, il peut arriver que la variable d'environnement NODE_PATH ne soit pas définie et que, lorsque vous exécutez node fileName.js, les bibliothèques ne soient pas trouvées. 

Recherchez la variable sur votre console et, si elle n’est pas présente, créez-la. Donnez-lui la valeur NODE_HOME\node_modules, où NODE_HOME est le répertoire d'installation de votre nœud. Ce chemin est l'endroit où npm install place chaque module lors du téléchargement.

2
Loïc

require.paths est supprimé, utilisez plutôt la variable d'environnement NODE_PATH.

2
vapour

Définissez NODE_PATH=NODE_HOME\node_modules.

J'utilise Windows 7 et cela fonctionne bien.

2
buzzcoder

La façon la plus simple de procéder consiste à exécuter npm install à partir du dossier de votre application. Cela indique à npm de tout brancher.

C'est la dernière instruction après express <appname>:

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

J'ai installé gulp et lorsque j'ai exécuté cette commande gulp dans la ligne de commande, une erreur gulp: command not found est survenue. Il est apparu que gulp avait été installé dans mon dossier local /home/YOURUSERNAME/.node/lib/node_modules et non dans le dossier global npm.

Vous pouvez vérifier le dossier racine npm en exécutant la commande suivante: npm root -g, qui renvoyait mon répertoire personnel /home/YOURUSERNAME/.node/lib/node_modules et non le /usr/local/lib/node_modules attendu.

Vous pouvez résoudre ce problème en exécutant la commande npm config set prefix /usr/local.

0
Bilal

pour les utilisateurs de mac

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

Pour tous les problèmes avec express avec un ordinateur mac:

La solution est: 

  1. chown à votre utilisateur le dossier .npm: 

    Sudo chown -R Webmaste /Users/webmaste/.npm/
    
  2. Sur votre dossier de test ou votre dossier: 

    Sudo npm install -g [email protected]
    
  3. Invoquez express depuis votre emplacement actuel: 

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

  5. Finalement: 

    node app
    

le message final dans la console devrait ressembler à ceci: 

Express server listening on port 3000 in development mode

0
galo hernandez

Enfin, avec Linux, un bon moyen consiste à utiliser la commande: Sudo apt-get install node-express

Mais avec Express 4, nous devons utiliser express-generator pour créer une application, l'installer avec 'npm install express-generator -g', puis exécuter la commande 'express myapp'. voir aussi install express

0
websoft102030