我遇到的问题包括要在我的NodeJs项目中执行的文件。
我在同一目录中有两个文件:
a.js
var test = "Hello World";
和
b.js
require('./a.js');
console.log(test);
我使用node b.js
执行b.js并收到错误ReferenceError: test is not defined
。
我查看了文档http://nodejs.org/api/modules.html#modules_file_modules
我错过了什么?提前谢谢。
答案 0 :(得分:82)
更改 a.js 以导出变量:
exports.test = "Hello World";
并将require('./a.js')
的返回值赋给变量:
var a = require('./a.js');
console.log(a.test);
您经常会看到并可能使用的另一种模式是将某些内容(一个对象,一个函数)分配给 a.js 中的module.exports
对象,如下所示:
module.exports = { big: "string" };
答案 1 :(得分:20)
你误解了应该发生的事情。模块中定义的变量不会共享。 NodeJS对它们进行了限制。
您必须使用module.exports
返回。
a.js
module.exports = "Hello World";
b.js
var test = require('./a.js');
console.log(test);
答案 2 :(得分:0)
如果要将变量导出到另一个文件中。有两种模式。
一个是
a.js
global.test = "Hello World";
//这里测试的是全局变量,但它会被污染
另一个是
a.js
module.exports.test = "Hello World";
或exports.test =" Hello World&#34 ;;
b.js
var test = require('./a.js');
//在b.js中测试可以在a.js中进行测试
的console.log(测试);