753 votes

Comment résoudre l'erreur "Cannot find module" en utilisant Node.js?

Après avoir téléchargé un module depuis GitHub et suivi les instructions pour le construire, j'essaie de l'intégrer dans un projet existant en utilisant :

> npm install ../faye

Cela semble fonctionner :

> 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 peut pas trouver 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._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 perdu quant à l'endroit où chercher ensuite. Des suggestions ?

9 votes

Le répertoire node_modules doit être situé à la racine de votre projet, aux côtés de app.js dans votre cas. Pourquoi avez-vous utilisé .. dans le chemin d'installation de npm ?

0 votes

Mon intention était d'avoir deux répertoires - un pour les sources de faye provenant de github et un autre pour mon projet qui nécessite faye. En installant à partir du répertoire faye (../faye), je m'attendais à ce qu'il installe le module localement sous node_modules, ce qui semble avoir été le cas. Je ne veux pas installer globalement car il y a d'autres projets qui dépendent d'une version stable de faye.

3 votes

Après avoir changé "npm install ../faye" en "npm install ../faye/build", cela fonctionne comme prévu. Je ne sais pas si c'est typique, mais faye crée un répertoire de build lorsqu'il est construit et y place une copie de package.json. npm ne se plaint pas de package.json au niveau racine, mais il fait référence à des fichiers qui n'existent pas à ce niveau.

0voto

Ce qui a finalement fonctionné pour moi était de m'assurer d'inclure toutes les dépendances merge-deep comme une externe dans votre configuration webpack :

externals: {
    puppeteer: 'require("puppeteer")',
}

Et de déclarer le chemin node_modules relativement à votre package.json dans votre package.json comme 'extraResource'.

"extraResources": [
    "node_modules/puppeteer,
}

-2voto

Akash Limbani Points 913

Veuillez installer la nouvelle CLI v3 (npm install -g ionic@latest).

Si ce problème persiste dans CLI v3. Merci!

-3voto

HardikT Points 386

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

(Psst! Je ne suis pas sûr d'avoir réussi à résoudre l'erreur ci-dessus, ou si j'ai enfreint une règle ou un format de réponse, mais j'ai rencontré l'erreur ci-dessus et quelques autres et il m'a fallu beaucoup de temps pour trouver les solutions appropriées pour ces erreurs. J'écris la solution complète car au cas où quelqu'un d'autre rencontrerait également ces erreurs, il trouvera peut-être une solution ici.)

Donc, ajoutant et développant la réponse fournie par PrashanthiDevi, et ajoutant également mon expérience personnelle, voici :

Je suis nouveau dans toute la partie des tests e2e et unitaires. J'ai commencé à m'intéresser à cette partie grâce à Protractor. 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 initialement exécuté le code pour lancer les tests, gulp itest, j'ai obtenu cette erreur 'Cannot find module'. Après avoir lu de nombreuses questions différentes sur SO, j'ai trouvé une réponse que je pensais pouvoir apporter une solution.

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

La raison de faire cela était de mettre à jour le dossier node-modules, à l'intérieur de notre dossier de projet, avec tous les fichiers et dépendances nécessaires.

(La partie ci-dessous peut-être sans rapport avec cette question, mais pourrait être utile si quelqu'un rencontait la même situation que j'ai rencontrée.)

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

Cependant, la solution à cette erreur m'a paru assez ridicule (et amusante). J'avais déjà le fichier chromedriver dans mon dossier selenium. Mais, il s'avère que l'erreur ci-dessus était due au fait que mes fichiers chromedriver étaient à l'intérieur du dossier selenium et pas à l'intérieur du dossier chromedriver. Donc, en créant un dossier chromedriver et en copiant les fichiers chromedriver là-bas, j'ai résolu mon problème !

Aussi, pour l'erreur : Time out waiting for the WebDriver Server, vous pouvez ajouter cette ligne de code dans le fichier conf.js à l'intérieur de exports.config{}:

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

J'espère que cela aidera !

-36voto

emekaokoli Points 49

Changer le répertoire et pointer vers votre dossier de projet actuel, puis exécuter "npm install".

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X