69

我遇到了问题,包括要在我的 NodeJs 项目中执行的文件。

我在同一个目录中有两个文件:

一个.js

var test = "Hello World";

b.js

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

我执行 b.jsnode b.js并得到错误ReferenceError: test is not defined

我浏览了文档http://nodejs.org/api/modules.html#modules_file_modules

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

4

3 回答 3

98

更改a.js以导出变量:

exports.test = "Hello World";

并将返回值赋给require('./a.js')一个变量:

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

您经常会看到并可能使用的另一种模式是将某些东西(对象,函数)分配给a.jsmodule.exports中的对象,如下所示:

module.exports = { big: "string" };
于 2012-07-30T17:35:28.730 回答
23

你误解了应该发生的事情。模块中定义的变量不共享。NodeJS 限定它们。

你必须用module.exports.

一个.js

module.exports = "Hello World";

b.js

var test = require('./a.js');
console.log(test);
于 2012-07-30T17:35:19.010 回答
1

如果您想将变量导出到另一个文件中。有两种模式。一个是a.js
global.test = "Hello World";//这里test是全局变量,但是会被污染

另一个是
a.js module.exports.test = "Hello World";或exports.test="Hello World"; b.js var test = require('./a.js'); //在b.js中测试可以得到a.js中的测试 console.log(test);

于 2017-04-08T21:31:27.570 回答