Comment puis-je résoudre l’erreur “Impossible de trouver le module” en utilisant 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. (/home/dave/src/server/app.js:2:12) at Module._comstack (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 perdu quant à la suite. Aucune suggestion?

L’utilisation de npm install installe le module uniquement dans le répertoire en cours (dans un sous-répertoire appelé node_modules ). Est-ce que app.js est situé sous home/dave/src/server/ ? Si ce n’est pas le cas et que vous souhaitez utiliser le module depuis n’importe quel répertoire, vous devez l’installer globalement à l’aide de 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 dépend mon code. Il y a quelques jours, quelqu’un a publié tous ses paquets ( https://medium.com/@azerbike/i-ve-just-liberated-my-modules-9045c06be67c#.kq9s64clp ), ce qui a brisé React, Babel et à peu près tout autre. Espérons que maintenant, si vous avez du code de production, vous ne pouvez pas compter sur NPM pour gérer vos dépendances.

J’ai eu un problème très similaire. La suppression de l’intégralité node_modules dossier node_modules et la réinstallation ont fonctionné pour moi:

 rm -rf node_modules npm install 
 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’}

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

Cela se produit lorsqu’une première installation npm est bloquée pour une raison quelconque (SIGINT de npm) ou que le délai est trop long ou que les données sont corrompues. Essayer une nouvelle installation npm ne sauvera pas le problème.

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

Pour les utilisateurs de TypeScript, si vous importez un module de nœud intégré (tel que http , path ou url ) et que vous obtenez une erreur telle que "Cannot find module "x" l’erreur peut être corrigée en cours d’exécution

 npm install @types/node --save-dev 

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

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 l’installation d’ apt-get .

Nous utilisons également l’outil pm2 pour déployer.

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 parameters de NVM sont actifs. Lorsque je lance 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 la version 5.6 échouent avec ce message.

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

Supprimez votre dossier racine node_module de votre projet (par exemple: myApp ). Allez dans le dossier myApp , puis tapez ci-dessous la commande du terminal

 >myApp>npm install 

Il installera tous les modules de dépendance requirejs pour votre projet.

Indiquez le chemin d’access au dossier de restauration, qui se trouvera dans le dossier node_modules, comme: var rest = require (‘./ node_modules / restler’);

Cela a fonctionné pour moi.

J’ai rencontré cette erreur hier. Il m’a fallu du temps pour me rendre compte que l’entrée main de package.json un fichier que j’avais déplacé. Une fois que j’ai mis à jour que l’erreur a disparu et que le paquet a fonctionné.

CONSEIL PRO:

Cette erreur m’est arrivée en luttant contre la fatigue et une maladie bénigne, car j’ai tapé node blah au lieu de npm blah .

Le message d’erreur reçu n’était pas assez en colère pour m’avertir de ma propre folie!

J’ai rencontré le même problème lorsque quelqu’un d’autre dans l’équipe a mis à jour package.json dans SVN. Supprimer simplement le répertoire node_modules n’a pas aidé. Comment j’ai résolu le problème est:

 rm -rf node_modules rm package.json rm package-lock.json svn up npm install ng build --env=prod 

J’espère que cela aide quelqu’un!

J’essayais de publier mon propre paquet et de l’inclure ensuite dans un autre projet. J’ai eu ce problème en raison de la façon dont j’ai construit le premier module. J’utilise l’exportation ES2015 pour créer le module, par exemple, disons que le module ressemble à ça:

 export default function(who = 'world'){ return `Hello ${who}`; } 

Après avoir compilé avec Babel et avant été publié:

 'use ssortingct'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function () { var who = arguments.length <= 0 || arguments[0] === undefined ? 'world' : arguments[0]; return 'Hello ' + who; }; 

Donc après npm install module-name dans un autre projet (aucun ES2015) je devais le faire

var hello = require('module-name').default;

Pour que le paquet soit importé.

J'espère que cela pourra aider!

webpack rencontré ce problème lors de l’utilisation de webpack avec webpack-dev-middleware .

Avait transformé un seul fichier dans un dossier .

L’observateur semblait ne pas voir le nouveau dossier et le module manquait maintenant.

Correction en redémarrant le processus.

Juste trouvé un scénario inhabituel qui peut être utile à quelqu’un et est une sorte de hareng rouge.

J’obtenais également l’erreur Cannot Find Module, mais curieusement, tout fonctionnait parfaitement dans mon environnement Node.js local (hébergé Mac). Ce problème est apparu uniquement lorsque le code a été déployé sur notre serveur Linux.

Eh bien … il s’est avéré être une faute de frappe que (apparemment) l’installation Node.js basée sur Mac était parfaitement heureuse d’ignorer.

L’inclusion ressemblait à ceci:

 var S3Uploader = require('./S3Uploader.class'); 

Mais le fichier actuel s’appelait “s3Uploader.class.js”

Notez la différence de casse entre le «s» et le «S» entre le code et le nom de fichier.

Donc, dans la rare circonstance qu’aucune des autres solutions ici ne résout votre problème, vérifiez que vous n’avez pas mal interprété les caractères de votre nom de fichier inclus! 🙂

et DUH!

Cette erreur peut se produire si vous avez require un module dont le champ main est manquant ou incorrect dans son package.json. Bien que le module lui-même soit installé, npm / node doit utiliser un seul fichier .js comme point d’entrée pour votre module. Si le champ main n’est pas là, il recherche par défaut index.js dans le dossier de votre module. Si le fichier principal de votre module ne s’appelle pas index.js, il ne pourra pas l’ require .

Découvert lors de la transformation d’un module basé sur un browserify en un CommonJS require module -able; browserify ne se souciait pas du champ main manquant, et donc l’erreur était passée inaperçue.

Je peux append un autre endroit pour vérifier; Le paquet que j’essayais d’utiliser était un autre de mes propres paquets que j’avais publié sur un repository privé de NPM. J’avais oublié de configurer correctement la propriété ‘main’ dans le package.json. Donc, le paquet était là dans le dossier node_modules du paquet consommant, mais je devenais “impossible de trouver le module”. Il m’a fallu quelques minutes pour réaliser mon erreur. 🙁

Dans mon cas, j’ai eu UNMET PEER DEPENDENCY redux@^3.0.0 provoquant ce message d’erreur, les voir tous et réinstaller les modules manquants avec –save

 npm install redux --save 

Peut-être que, comme moi, vous définissez le moteur de visualisation dans un moteur qui n’existe pas ou que vous essayez d’utiliser un moteur de template non enregistré. Assurez-vous d’utiliser: app.engine('engine name',engine) app.set('view engine','engine name')

Vérifiez si la variable d’environnement NODE_PATH est définie correctement et pointe vers le chemin node_modules. nodejs utilise cette variable pour rechercher les bibliothèques

Tout d’abord, oui, une partie de ma réponse est certainement utile pour résoudre l’ erreur signalée par OP. Deuxièmement, après avoir essayé l’étape ci-dessous, j’ai dû faire face à quelques autres erreurs, et donc, en avoir écrit la solution.

(Psst! Je ne suis pas sûr d’avoir aidé à résoudre l’erreur ci-dessus, ou si j’ai enfreint une règle ou un format de réponse, mais j’ai fait face à l’erreur ci-dessus et j’ai mis beaucoup de temps à trouver les solutions appropriées à ces erreurs: J’écris la solution complète car, si quelqu’un d’autre fait également face à ces erreurs, il espère obtenir une solution ici.)

Donc, en ajoutant et en élaborant la réponse fournie par PrashanthiDevi , et en ajoutant mon expérience personnelle, la voici:

Je suis nouveau sur l’ensemble de la partie e2e et des tests unitaires. J’ai commencé à regarder cette partie de Protractor . Maintenant, j’avais déjà les fichiers dans lesquels les tests étaient écrits, mais je devais exécuter les tests.

J’avais déjà installé tous les logiciels et outils nécessaires, mais lorsque j’ai lancé le code pour exécuter les tests, j’ai eu cette erreur . Après avoir passé en revue de nombreuses questions sur SO, j’ai trouvé une réponse qui, selon moi, pourrait aider à trouver une solution.

La personne avait suggéré d’exécuter la commande npm install dans mon dossier de projet.

La raison pour cela était de mettre à jour le dossier node-modules , dans notre dossier de projet, avec tous les fichiers et dépendances requirejs et nécessaires.

(La partie ci-dessous peut ne pas être pertinente avec cette question, mais pourrait être utile si quelqu’un rencontrait la même situation que moi.)

L’étape ci-dessus a sûrement résolu mon erreur précédente, mais en a lancé une nouvelle! Cette fois, l’erreur étant Could not find chromedriver at '..\node_modules\protractor\selenium\chromedriver' .

Cependant, la solution à cette erreur était assez stupide (et drôle) pour moi. J’avais déjà le fichier chromedriver dans mon dossier de selenium . Mais, il s’avère que l’erreur ci-dessus venait parce que mes fichiers chromedriver étaient dans le dossier de selenium et non dans le dossier chromedriver . Donc, créer un dossier chromedriver et copier les fichiers chromedriver a résolu mon problème!

En outre, pour l’ erreur: Délai d’attente dépassé pour le serveur WebDriver , vous pouvez append cette ligne de code au fichier exports.config{} dans exports.config{} :

seleniumAddress: 'http://localhost:8080/'

J’espère que cela t’aides!

Exécutez la commande suivante uniquement:

 npm install 

Il installera tous les modules requirejs dans le dossier node_modules .

J’ai trouvé la solution simple pour résoudre ce problème.

Supprimez simplement C: \ Users \ UserName \ AppData \ Roaming \ npm \

puis installez le noeud.

Maintenant, votre problème sera résolu.

Changez le répertoire et pointez sur votre dossier de projet actuel, puis sur “npm install”. .

Cela installera toutes les dépendances et tous les modules dans votre dossier de projet.