web-dev-qa-db-fra.com

Nodejs ne trouve pas le module installé sous Windows?

J'apprends actuellement les nodejs sous Windows. Npm.cmd installe globalement plusieurs modules et nodejs n'a pas réussi à trouver les modules installés. Prenez le jade par exemple,

npm install jade -g

Jade est installé dans le répertoire "C:\Program Files (x86)\nodejs\node_modules", mais le code suivant échouera avec une erreur "Cannot find module 'jade'",

var jade = require('jade');

Cependant, le code fonctionnera correctement lorsque jade est installé localement (sans l'option -g dans npm). Je ne veux pas utiliser de modules installés localement, c'est une perte d'espace disque pour moi. Quelqu'un peut-il m'aider à faire en sorte que les modules installés globalement fonctionnent sous Windows?

215
Cosmore

Ajoutez une variable d'environnement appelée NODE_PATH et définissez-la sur %USERPROFILE%\Application Data\npm\node_modules (Windows XP), %AppData%\npm\node_modules (Windows 7/8/10) ou à l'endroit où npm finit par installer les modules sur votre version de Windows. Pour le faire une fois pour toutes, ajoutez-le en tant que variable système dans l'onglet Avancé de la boîte de dialogue Propriétés système (exécutez control.exe sysdm.cpl,System,3).

La solution rapide dans Windows 7+ consiste simplement à exécuter:

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

Il vaut la peine de mentionner que NODE_PATH n'est utilisé que lors de l'importation de modules dans les applications Node. Lorsque vous souhaitez utiliser les fichiers binaires de modules installés globalement dans votre CLI, vous devez également les ajouter à votre PATH, mais sans la partie node_modules (par exemple %AppData%\npm dans Windows 7/8/10).


Vieille histoire

Je suis assez nouveau sur node.js et je ne peux donc pas tout à fait avoir raison, mais d'après mon expérience, cela fonctionne de la manière suivante:

  1. -g n'est pas un moyen d'installer des bibliothèques globales, c'est juste un moyen de les placer sur le chemin du système afin que vous puissiez les appeler à partir de la ligne de commande sans écrire le chemin complet. C'est utile, par exemple, alors que node app convertit des fichiers locaux, comme less - si vous l'installez globalement, vous pouvez l'utiliser dans n'importe quel répertoire.
  2. node.js lui-même n'a pas consulté le répertoire global npm, il utilise un autre algorithme pour rechercher les fichiers requis: http://nodejs.org/api/modules.html#modules_file_modules (essentiellement son analyse de tous les le chemin, en partant du dossier courant pour le dossier node_modules et le vérifie).

Voir question similaire pour plus de détails: Comment installer un module globalement avec npm?

318
Alexey Ivanov

si vous êtes sur la plate-forme Windows7, vous devriez peut-être changer le NODE_PATH comme ceci: %AppData%\npm\node_modules

33
Jack

Je sais que je peux réveiller un zombie, mais je pense que c'est toujours un problème. Si vous avez besoin d'un accès global aux modules de nœud sous Windows 7, vous devez l'ajouter à votre chemin de variable global: 

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

Important: seulement ceci sans la partie node_modules, m’a pris une demi-heure pour voir cela.

24
Vitaliy Terziev

Pour le faire fonctionner sur Windows 10, je l'ai résolu en ajoutant le dossier %USERPROFILE%\AppData\Roaming\npm à mon CHEMIN. Ayant ajouté \node_modules comme ceci: %USERPROFILE%\AppData\Roaming\npm\node_modules\ ne fonctionnait pas pour moi.

15
Andi-lo

Je citerai simplement le blog post de ce noeud ...

En général, la règle de base est la suivante:

  • Si vous installez quelque chose que vous voulez utiliser dans votre programme, utilisez require («que ce soit»), puis installez-le localement, à la racine de votre projet.
  • Si vous installez quelque chose que vous voulez utiliser dans votre shell, en ligne de commande ou quelque chose, installez-le globalement, de sorte que son.. les binaires se retrouvent dans votre variable d’environnement PATH.

...

Bien sûr, il y a des cas où vous voulez faire les deux ..___. Coffee-script et Express sont tous deux de bons exemples d'applications qui ont un interface de ligne de commande, ainsi qu'une bibliothèque. Dans ces cas, vous pouvez Effectuez l'une des actions suivantes:

  1. Installez-le aux deux endroits. Sérieusement, êtes-vous à court d'espace disque? C’est bien, vraiment. Ce sont de minuscules programmes JavaScript.
  2. Installez-le globalement, puis npm link coffee-script ou npm link express (si vous êtes sur une plate-forme prenant en charge les liens symboliques.) Ensuite, cliquez sur il vous suffit de mettre à jour la copie globale pour mettre à jour tous les liens symboliques en tant que bien.
12
soemarko

Pour faire court, utilisez npm link jade dans votre répertoire app.

10
sntran

J'ai essayé d’ajouter/éditer des variables d’environnement et d’arriver à la conclusion que:

  1. Modifier/ajouter User variables (de la case du haut) au lieu de System variables (de la partie inférieure); sinon, vous devez "exécuter en tant qu'administrateur" pour que cela fonctionne.
  2. Ajoutez ;%AppData%\npm à Path afin de l'utiliser comme outil de ligne de commande (si pris en charge, comme jshint et grunt-cli).
  3. Créez NODE_PATH et définissez-le %AppData%\npm\node_modules afin de require('<pkg_name>') dans les scripts sans l'installer dans le répertoire du projet. (Mais npm link est suggéré pour cette exigence si vous travaillez sur un système d'exploitation avec mklink tel que Vista ou plus récent.)

Environnement de test:

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

J'ai rencontré ce problème sous Windows 7, en cours d'exécution

npm install -g gulp

en tant qu'administrateur tout en étant connecté en tant qu'utilisateur normal.

Solution: Lors de l'exécution de la même installation que l'utilisateur normal (pas "exécuter en tant qu'administrateur" pour cmd), tout allait bien. Je suppose que cela est lié au chemin d'installation et de recherche par défaut.

5
Sebastian

J'ai eu du mal à faire fonctionner des modules globaux. Finalement, j'ai explicitement ajouté C:\Users\yourusername\AppData\Roaming\npm à la variable PATH sous Variables système. J'avais aussi besoin que cette variable vienne avant la variable de chemin nodejs dans la liste.

J'utilise Windows 10.

5
John Galt

Pour Windows, tout le monde a dit que vous devriez définir les variables d’environnement pour les modules nodejs et npm, mais savez-vous pourquoi? Certains modules ont un outil de ligne de commande, après l’installation du module, il y a [module] .cmd fichier dans C:\Program Files\nodejs , et il est utilisé pour le lancement dans la commande window. Ainsi, si vous n'ajoutez pas le chemin contenant le fichier cmd aux variables d'environnement% PATH% , vous ne pourrez pas les lancer avec succès via la fenêtre de commande.

3
Kiki.J.Hu

De mon expérience avec win8.1 npm installe des modules sur C:\Users\[UserName]\AppData\Roaming\npm\node_modules mais dumply les recherche sur C:\Users\[UserName]\node_modules.

Un module de référence de solution simple en application par chemin complet:

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

J'ai eu le même problème, en essayant d'installer Bower avec npm install -g bower

Je pense que c’est parce que node a été installé par un autre utilisateur, pas par moi.

J'ai désinstallé le noeud, puis je l'ai réinstallé. Pendant l'installation, j'ai vu ce texte pour l'option (Ajouter à PATH> modules npm):

Message dans l'installation du noeud

 enter image description here

Après l'installation du nœud, j'ai exécuté npm install -g bower à nouveau. Et maintenant, Bower fonctionne.

Bien sûr, il n'est pas nécessaire de réinstaller le noeud avec son propre utilisateur, comme moi. La solution doit être via les variables NODE_PATH _ ou CHEMIN _, comme d'autres utilisateurs l'ont expliqué.

Vous remarquerez seulement que ce problème ne se produit que si le noeud a été installé par un autre utilisateur (ou si, lors de l'installation, l'option Ajouter à PATH> modules npm n'a pas été cochée).

1
Gregorio

Je suis tombé sur cette question parce que je veux utiliser node.js avec Visual Studio 2015 sur mon nouvel ordinateur avec Windows 10. J'ai utilisé node.js sur Windows 7, 8 et 8.1. J'utilise un noeud hérité.js 0.10.39 car je dois utiliser cette version à cause du module série et RFXCOM.

La solution pour Windows 10 consiste à définir NODE_PATH dans les variables d’environnement avec C:\Users\User\node_modules.

1
wetlip

Pour Windows 10, je devais installer localement gulp dans le dossier:

C:\Users\myaccount\AppData\Roaming\npm\node_modules

npm install gulp

Ceci a corrigé mon problème de "gulp is not reconnu"

1
Bizz Websites

Sinon, vous pouvez ajouter à ~/.npmrc right prefix . J'ai C:\Program Files\nodejs pour 64 Win7.

1
dmi3y

Toutes les réponses ci-dessus n'ont pas fonctionné pour moi. La seule chose qui a finalement fonctionné a été d’ajouter le% AppData%\npm à la variable d’environnement Path, ET pour supprimer les deux fichiers ng dans C:\Program Files\nodejs.

Les packages ng n'étant pas installés dans C:\Program Files\nodejs\node_modules, il était donc évident que l'utilisation du fichier binaire ng du répertoire nodejs ne fonctionnerait pas.

Je ne suis pas sûr de savoir pourquoi la recherche a été effectuée dans ce répertoire car j'ai déjà configuré la variable d'environnement PATH dans le répertoire C:\Users\MyUser. J'ai essayé d'ajouter des variables système et/ou NODE_PATH.

0
devqon

Il suffit de télécharger et de réinstaller le noeud à partir de this et cela résoudra tous les problèmes de chemin. 

N'oubliez pas de redémarrer votre commande Invite ou terminal.

0
Mahendra