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?
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?
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 :-)
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
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
.
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.
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:
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
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
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.
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.
require.paths
est supprimé, utilisez plutôt la variable d'environnement NODE_PATH
.
Définissez NODE_PATH=NODE_HOME\node_modules
.
J'utilise Windows 7 et cela fonctionne bien.
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
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
.
pour les utilisateurs de mac
cd /usr/local/lib/node
Sudo ln -s ../node_modules/* ./$1
Pour tous les problèmes avec express avec un ordinateur mac:
La solution est:
chown
à votre utilisateur le dossier .npm:
Sudo chown -R Webmaste /Users/webmaste/.npm/
Sur votre dossier de test ou votre dossier:
Sudo npm install -g [email protected]
Invoquez express depuis votre emplacement actuel:
/usr/local/share/npm/bin/express
Sudo cd . && npm install
Finalement:
node app
le message final dans la console devrait ressembler à ceci:
Express server listening on port 3000 in development mode
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