我遇到的问题包括在我的NodeJs项目中执行的文件.
我在同一目录中有两个文件:
a.js
var test = "Hello World";
Run Code Online (Sandbox Code Playgroud)
和
b.js
require('./a.js');
console.log(test);
Run Code Online (Sandbox Code Playgroud)
我执行b.js node b.js
并得到错误ReferenceError: test is not defined
.
我查看了文档http://nodejs.org/api/modules.html#modules_file_modules
我错过了什么?提前致谢.
rdr*_*rey 86
更改a.js以导出变量:
exports.test = "Hello World";
Run Code Online (Sandbox Code Playgroud)
并将返回值require('./a.js')
赋给变量:
var a = require('./a.js');
console.log(a.test);
Run Code Online (Sandbox Code Playgroud)
您经常会看到并可能使用的另一种模式是module.exports
在a.js中为对象分配一些东西(一个对象,一个函数),如下所示:
module.exports = { big: "string" };
Run Code Online (Sandbox Code Playgroud)
And*_*ell 21
你误解了应该发生的事情.模块中定义的变量不会共享.NodeJS对它们进行了限制.
你必须把它归还module.exports
.
a.js
module.exports = "Hello World";
Run Code Online (Sandbox Code Playgroud)
b.js
var test = require('./a.js');
console.log(test);
Run Code Online (Sandbox Code Playgroud)