require.main和module之间有什么区别?

api*_*nti 1 javascript node.js

我正在用节点构建一个cli,当我不得不引用模块的文件路径时,我不明白它是如何工作的.

从节点的文档,它说require.main === module.这些具体意味着什么?

Fur*_*anO 9

来自doc;

当文件直接从Node.js运行时,require.main设置为其模块.这意味着您可以通过测试确定文件是否已直接运行

require.main === module
Run Code Online (Sandbox Code Playgroud)

对于文件foo.js,如果通过节点foo.js运行,则为true,但如果由require('./ foo')运行则为false.

所以假设你有一个名为foo.js的文件,它涉及以下代码;

console.log(require.main === module);
Run Code Online (Sandbox Code Playgroud)

当您从终端键入"node foo.js"时,您将看到它返回true.但是,假设您有第二个名为foo1.js的文件,您需要在此文件中使用foo.js,如下所示;

var foo = require("./foo");
Run Code Online (Sandbox Code Playgroud)

当您从终端键入"node foo1.js"时,您将看到它返回false.

这是文档的这一部分所说的.