web-dev-qa-db-fra.com

Node.js ne peut pas nécessiter un fichier .js dans le même répertoire

J'ai un projet node-webkit avec un main.js. Tout en haut, j'ai

var updater = require("./updater.js");

et j'ai un fichier nommé updater.js dans le même répertoire que main.js. Lorsque j'exécute l'application, j'obtiens l'erreur

Uncaught Error: Cannot find module './updater.js' 

updater.js contient une ligne:

module.exports = "Hello!";

Je n'ai aucune idée pourquoi il ne peut pas exiger le fichier. J'ai vu un autre projet faire la même chose. Je peux require modules réguliers npm très bien à partir du même main.js.

23
Antrikshy

En effet, lorsque vous exécutez votre application (main.js) à l'aide de node-webkit, le répertoire racine (de travail) se trouve où se trouve le fichier index.html, donc './' fait référence à ce répertoire et non à celui dans lequel se trouve le fichier que vous la demande du module est en.

Vous pouvez facilement résoudre ce problème en utilisant méthode de résolution dans le module de noeud 'path' et en fournir la sortie à la méthode require dans votre fichier de travail

Procédez simplement comme suit:

var path = require('path');
var updater = require( path.resolve( __dirname, "./updater.js" ) );

EDIT: des informations sur l'objet de nœud global '__dirname' (et d'autres) peuvent être trouvées ici .

31
Dmitry Matveev