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

Pat*_*rio 63 require node.js

我遇到的问题包括在我的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.exportsa.js中为对象分配一些东西(一个对象,一个函数),如下所示:

module.exports = { big: "string" };
Run Code Online (Sandbox Code Playgroud)

  • 我们还能在html中使用这个js文件(a.js)吗? (2认同)

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)