Question Comment résoudre l'erreur "Impossible de trouver le module" à l'aide de Node.js?


Après avoir sorti un module de GitHub et suivi les instructions pour le construire, j'essaie de le tirer dans un projet existant en utilisant:

> npm install ../faye

Cela semble faire l'affaire:

> npm list
/home/dave/src/server
└─┬ faye@0.7.1
  ├── cookiejar@1.3.0
  ├── hiredis@0.1.13
  └── redis@0.7.1

Mais Node.js ne trouve pas le module:

> node app.js
node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
Error: Cannot find module 'faye'
    at Function._resolveFilename (module.js:334:11)
    at Function._load (module.js:279:25)
    at Module.require (module.js:357:17)
    at require (module.js:368:17)
    at Object.<anonymous> (/home/dave/src/server/app.js:2:12)
    at Module._compile (module.js:432:26)
    at Object..js (module.js:450:10)
    at Module.load (module.js:351:31)
    at Function._load (module.js:310:12)
    at Array.0 (module.js:470:10)

Je veux vraiment comprendre ce qui se passe ici, mais je suis un peu perplexe quant à la prochaine étape. Aucune suggestion?


430
2018-01-26 18:57


origine


Réponses:


En utilisant npm install installe le module dans le répertoire courant uniquement (dans un sous-répertoire appelé node_modules). App.js est-il situé sous home/dave/src/server/? Si ce n'est pas le cas et que vous voulez utiliser le module à partir de n'importe quel répertoire, vous devez l'installer globalement en utilisant npm install -g.

J'installe généralement la plupart des paquets localement afin qu'ils soient enregistrés avec mon code de projet.

Mise à jour (3/2016):

J'ai reçu beaucoup de critiques pour ma réponse, en particulier que je vérifie les paquets dont mon code dépend. Il y a quelques jours, quelqu'un a publié tous ses paquets (https://medium.com/@azerbike/i-ve-just-liberated-my-modules-9045c06be67c#.kq9s64clp) qui a cassé React, Babel, et à peu près tout le reste. Heureusement, il est clair maintenant que si vous avez du code de production, vous ne pouvez pas compter sur le maintien par NPM de vos dépendances pour vous.


395
2018-01-26 19:15



J'ai eu un problème très similaire. Enlever la totalité node_modules dossier et ré-installation a travaillé pour moi:

rm -rf node_modules
npm install

346
2018-05-25 10:30



npm install --save module_name

Par exemple, si l'erreur est:

{[Erreur: Impossible de trouver le module '/root/.npm/form-data'] code: 'MODULE_NOT_FOUND'}

alors vous pouvez résoudre ce problème en exécutant la commande npm install --save form-data.


65
2018-06-17 08:51



Cela se produit quand un premier NPM install a planté pour une raison quelconque (SIGINT de npm) ou que le délai était trop long ou que les données étaient corrompues. Essayer à nouveau une installation de npm ne sauvera pas le problème.

Quelque chose s'est mal passé lors de la première vérification de npm, donc le meilleur choix est de supprimer le fichier et de redémarrer l'installation de npm.


14
2017-08-06 16:23



Pour les utilisateurs de TypeScript, si vous importez un module de noeud intégré (tel que http, path ou url) et vous obtenez une erreur telle que "Cannot find module "x" alors l'erreur peut être réparée en courant

npm install @types/node --save-dev

La commande va importer les définitions NodeJS TypeScript dans votre projet, vous permettant d'utiliser les modules intégrés de Node.


9
2017-10-03 09:12



Si vous utilisez nvm, vérifiez que les node_modules existants qui sont liés à d'autres bibliothèques sont compilés pour la version Node.js correcte.

J'avais la même erreur. La raison était la suivante: nous utilisons nvm car nous exécutons deux applications sur un serveur, l’autre nécessite Node.js 5.6 car elle utilise node-gd (qui ne fonctionne pas sur Node.js 6 pour le moment), l’autre nécessite Node.js 6. Node.js 6 est le apt-get installation.

Nous utilisons également l'outil pm2 pour le déploiement.

Ainsi, la configuration par défaut est que le processus pm2 démarre lorsque nvm n'est pas activé, il utilise donc l'installation apt-get de Node.js (version 6). Ainsi, le démon principal de pm2 commence par Node.js 6. Si je lance des applications en mode fourchette, elles démarrent dans des processus distincts et les paramètres de NVM sont actifs. Lorsque j'exécute des applications en mode cluster, elles héritent de l'environnement non-nvm.

Ainsi, lorsque j'ai essayé de passer en mode cluster, l'application n'a pas pu démarrer car les liaisons compilées pour 5.6 échouaient avec ce message.

J'ai corrigé cela en redémarrant pm2 lorsque les réglages nvm sont en vigueur. Les scripts de démarrage devraient également être corrigés.


7
2018-06-10 11:30



Retirez votre node_module dossier racine de votre projet (par exemple: myApp). Aller à myApp dossier, puis tapez la commande ci-dessous du terminal

>myApp>npm install

Il va installer tous les modules de dépendance requis pour votre projet.


5
2017-07-06 07:25



Spécifiez le chemin d'accès au dossier du repositionneur, qui sera à l'intérieur du dossier node_modules comme: var rest = require ('./ node_modules / restler');

Cela a fonctionné pour moi.


4
2017-09-06 05:20