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

时间:2015-12-09 00:28:58

标签: javascript node.js

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

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

1 个答案:

答案 0 :(得分:9)

来自doc;

  

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

require.main === module
  

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

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

console.log(require.main === module);

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

var foo = require("./foo");

当您从终端输入“node foo1.js”时,您会看到它返回false。

这就是这部分文档所说的内容。