web-dev-qa-db-fra.com

NodeJs nécessite des problèmes ('./ file.js')

J'ai des problèmes, notamment des fichiers à exécuter dans mon projet NodeJs.

J'ai deux fichiers dans le même répertoire:

a.js

var test = "Hello World";

et 

b.js

require('./a.js');
console.log(test);

J'exécute b.js avec node b.js et j'obtiens l'erreur ReferenceError: test is not defined.

J'ai parcouru la documentation http://nodejs.org/api/modules.html#modules_file_modules

Qu'est-ce que je rate? Merci d'avance.

55
Patrick Lorio

Modifiez a.js pour exporter la variable:

exports.test = "Hello World";

et affectez la valeur de retour de require('./a.js') à une variable:

var a = require('./a.js');
console.log(a.test);

Un autre motif que vous verrez souvent et que vous utiliserez probablement est d’affecter quelque chose (un objet, une fonction) à l’objet module.exports dans a.js , comme suit:

module.exports = { big: "string" };
79
rdrey

Vous comprenez mal ce qui devrait se passer. Les variables définies dans votre module ne sont pas partagées. NodeJS les surveille.

Vous devez le renvoyer avec module.exports.

a.js

module.exports = "Hello World";

b.js

var test = require('./a.js');
console.log(test);
19
Andrew T Finnell

si vous souhaitez exporter la variable dans un autre fichier. Il existe deux modèles . L'un est a.js
global.test = "Hello World"; // le test ici est une variable globale, mais il sera pollué

L'autre est
a.js module.exports.test = "Hello World"; ou exports.test = "Hello World"; b.js var test = require('./a.js'); // le test dans b.js peut obtenir le test dans une. journal (test);

0
philipzhao