gpt4 book ai didi

javascript - 当文件需要一个没有导出任何内容的模块时,对 Node.js 行为的困惑

转载 作者:搜寻专家 更新时间:2023-10-31 23:11:38 27 4
gpt4 key购买 nike

<分区>

我对 Node.js 的 require() 函数和 module.exports 的功能和性质有一般和高层次的理解。但是,有些行为对我来说没有意义。

假设我有两个非常简单的单行文件 a.jsb.js

a.js 中:

require('./b.js');

b.js 中:

console.log("testing");

如果我在终端中运行 node a.js,下面是记录的内容:

$ node a.js
testing.

这意味着只要请求一个文件/模块,请求文件的内容就会暴露给发出请求的文件(对吧?)


现在我将 a.js 修改为:

require('./b.js');
testFunc(1, 2);

和 b.js 对此:

var testFunc = function(a, b) {
var result = a + b;
return result;
}

然后在终端中再次运行 node a.js:

$ node a.js
/demo/a.js:3
testFunc(1, 2);
^

ReferenceError: testFunc is not defined
......

那么这里发生了什么?显然,在第一个示例中,通过要求 b.jsa.js 可以访问 b.js 中的内容。但是,在第二个示例中,b.js 中定义的函数根本不可访问,如 ReferenceError: testFunc is not defined 所示。这里有什么诀窍?

是不是因为 require() 只运行所需的脚本,而实际上没有将其内容暴露给请求文件?因此,为了使用其他模块的内容,必须使用 module.exports 公开该模块?

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com