2017-07-17 63 views
2

在Node.js的文件,我发现了一个句话说的Node.js,require.main ===模块

当一个文件从Node.js的直接运行,require.main被设置为它 模块。这意味着可以通过测试require.main === module来确定文件是否已经直接运行。

我要问什么是main这里,我找不到这个main源代码的定义,任何人都可以帮助,谢谢!

回答

6

require是一个函数。 .main是该功能的一个属性,因此您可以参考require.main。你指的是文档的那部分说,你可以写这样的代码:

if (require.main === module) { 
    // this module was run directly from the command line as in node xxx.js 
} else { 
    // this module was not run directly from the command line and probably loaded by something else 
} 

在上面的代码中module是传递到由node.js的加载,使所有代码模块的变量基本上如果require.main是当前模块,那么当前模块是从命令行加载的内容。

设置该属性的代码在这里:https://github.com/nodejs/node/blob/master/lib/internal/module.js#L23

+0

感谢您的回答,但我无法在module.js文件的Module.prototype.require中找到.main属性。我只是对源代码在哪里定义.main属性感到好奇。 – phaneven

+0

@phaneven - 设置该属性的代码位于:https://github.com/nodejs/node/blob/master/lib/internal/module.js#L23 – jfriend00