23 votes

Erreur de module non trouvé dans node.js

Je suis nouveau sur node.js, c'est ma première application node donc, veuillez m'excuser si je pose des questions évidentes. J'ai un fichier appelé utils.js et j'ai besoin que les fonctions définies dans ce fichier soient disponibles dans main.js. Donc, j'ai essayé en utilisant

require(utils.js)

Mais cela me génère cette erreur :

Erreur : Impossible de trouver le module 'utils.js'
à Function.Module._resolveFilename (module.js:338:15)
à Function.Module._load (module.js:280:25)
à Module.require (module.js:364:17)
à require (module.js:380:17)

Mon main.js est sous c:\demo\proj\src\main\main.js et utils.js est sous c:\demo\proj\src\utils\utils.js.

J'ai essayé différentes combinaisons de require, mais je reçois toujours l'erreur de module introuvable :

  • require(/proj/src/utils/utils.js);

  • require(/utils.js);

  • require(c:/demo/proj/src/utils/utils.js);

J'ai même essayé de le mettre dans le dossier node_modules, mais j'ai toujours la même erreur. Pouvez-vous s'il vous plaît me guider sur mes erreurs ici?

Éditer :

J'ai essayé de changer la structure de mon dossier comme l'a suggéré @mithunsatheesh ci-dessous :

  • projet
    • src
      • utils - utils.js
  • main.js

Mon require est le suivant : require('./src/utils/utils.js')

Mais lorsque j'exécute node main.js je reçois toujours l'erreur suivante :

Erreur : Impossible de trouver le module './src/utils/utils.js'
à Function.Module._resolveFilename (module.js:338:15)
à Function.Module._load (module.js:280:25)
à Module.require (module.js:364:17)

9voto

mithunsatheesh Points 7623

Selon la structure de dossier que vous avez mentionnée dans la question, vous devez essayer

require('../utils/utils.js')

C'est le cas si vous avez votre dossier de projet structuré comme

  • proj
    • src
      • utils
        • utils.js
      • main
        • main.js

et que vous exécutez node main.js

Pour commenter sur les détails fournis dans votre question.

  1. veuillez ne pas utiliser require(c:/demo/proj/src/utils/utils.js); comme vous aviez essayé. imaginez que vous exportez le dossier proj avec vos fichiers de projet, alors la require mentionnée sera une erreur.

  2. De plus, la structure du dossier pourrait être quelque chose comme

    • proj
      • src
        • utils - utils.js
      • main.js
      • package.json

pour que vous gardiez le fichier principal à la racine du dossier du projet. et require le utils.js comme

 require('./src/utils/utils.js')

MISE À JOUR

D'après ce que je peux voir du message d'erreur mis à jour. C'est toujours un problème avec le chemin de 'utils.js' dans require. À partir de votre structure de dossier mise à jour, il semble que main.js soit au même niveau que le dossier proj, remarquez que la structure proposée avait main.js et le dossier src au même niveau à l'intérieur du dossier proj.

Même si c'était une suggestion que j'ai faite car vous suiviez une structure de dossier qui n'avait pas de sens. Simplement require('../utils/utils.js') aurait résolu votre problème sans même modifier la structure de dossier que vous avez mentionnée au début.

4voto

Minko Gechev Points 11295

Utilisation : require('./utils.js');. C'est la manière correcte d'exiger un module à partir d'un fichier qui est situé dans le dossier du module requis.

Vous devez fournir un chemin relatif ou absolu, je suppose que utils.js n'est pas dans votre racine donc require('/utils.js'); n'est pas le bon chemin.

Exemple :

Imaginez que vous avez deux fichiers utils.js et main.js dans le même dossier. Le contenu de utils.js est :

utils.js

exports.foo = function () {
    console.log('foo');
};

Pour appeler foo depuis utils.js dans main.js, vous devriez utiliser :

main.js

require('./utils.js').foo();

1voto

Tout d'abord, vérifiez votre dossier actuel. Êtes-vous dans le bon dossier?

if(yes) then this answer is not for you can leave and go further

if(not sure || No)

cd "nom de votre dossier." 
node "nom de votre fichier.js."

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