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.

4voto

martinp999 Points 191

Je peux ajouter un autre endroit à vérifier; le package que j'essayais d'utiliser était un autre de mes propres packages que j'avais publié sur un dépôt NPM privé. J'avais oublié de configurer correctement la propriété 'main' dans le package.json. Donc, le package était présent dans le dossier node_modules du package consommateur, mais j'obtenais "module introuvable". Il m'a fallu quelques minutes pour réaliser ma bourde. :-(

4voto

Srishti Singh Points 49

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

Cela a fonctionné pour moi.

3voto

Kartik Garasia Points 176

Si vous utilisez TypeScript et que vous obtenez une erreur après avoir installé tous les modules node, supprimez package-lock.json. Ensuite, exécutez npm install.

2voto

Ursu Alexandr Points 96

Dans mon cas, j'avais UNMET PEER DEPENDENCY redux@^3.0.0 provoquant ce message d'erreur, voir tous et installer à nouveau les modules manquants en utilisant --save

npm install redux --save

1voto

JGFMK Points 405

J'ai rencontré ce problème en utilisant live-server (en utilisant le livre Fullstack React) :

Je recevais constamment :

Erreur : Impossible de trouver le module './disable-browser-cache.js'
...

J'ai dû ajuster mon package.json

  • De :

    "scripts": { ... "server": "live-server public --host=localhost --port=3000 --middleware=./disable-browser-cache.js" ... } "scripts" :

  • À :

    ... "server": "live-server public --host=localhost --port=3000 --middleware=../../disable-browser-cache.js" ... }

Remarquez que les chemins relatifs semblent cassés/embarrassants... ./ devient ../../

J'ai trouvé le problème ici

Aussi si quelqu'un suit ce livre :

  1. changer les devDependencies dans packages.json en :

"live-server": "https://github.com/tapio/live-server/tarball/master"

Actuellement cela passe de la version 1.2.0 à v1.2.1

  1. Il est conseillé d'utiliser nvm.
  2. Il est préférable d'installer v13.14 de Node (*v14+ crée d'autres problèmes) nvm install v13.14.0
  3. nvm alias default v13.14.0
  4. Mettre à jour npm avec npm i -g npm@7.3.0
  5. exécuter : npm update
  6. vous pouvez utiliser npm list pour voir la hierarchie des dépendances aussi. (Pour une raison quelconque, node 15 + la dernière version de npm par défaut ne montre que le premier niveau de profondeur - à la manière de package.json. Cela rend la commande par défaut inutile! Vous pouvez ajouter --depth=n) pour rendre la commande à nouveau plus utile).
  7. vous pouvez aussi utiliser npm audit. Il y a des problèmes nécessitant une mise à jour de chokidar et de certaines autres packages) vers des versions plus récentes. live-server n'a pas été mis à jour pour supporter les nouvelles versions de bibliothèques correspondantes de node v 14.

Voir un post similaire ici


Note de bas de page : Autre chose à prendre en compte lorsque vous arrivez à la section JSX, consultez ma réponse ici : https://stackoverflow.com/a/65430910/495157

Quand vous arrivez à :

  • Configuration avancée du composant avec props, state et enfants. P182+, la version 13 de node n'est pas supportée pour certaines des dépendances là-bas.
  • J'ajouterai des découvertes pour cela plus tard aussi.

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