NodeJ需要(' ./ file.js')问题

时间:2012-07-30 17:30:17

标签: node.js require

我遇到的问题包括要在我的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

我错过了什么?提前谢谢。

3 个答案:

答案 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(测试);