我可以知道,在node.js,如果我的脚本是直接运行或由另一个脚本加载?
我刚刚开始使用node.js,我有一些Python的经验。 在Python中,我可以检查__name__
variables是否设置为"__main__"
,如果是,我会知道我的脚本正在直接运行。 在这种情况下,我可以运行testing代码或直接以其他方式使用模块。
在node.js中有类似的东西吗?
您可以使用module.parent
来确定当前脚本是否由另一个脚本加载。
例如
a.js
:
if (!module.parent) { console.log("I'm parent"); } else { console.log("I'm child"); }
b.js
:
require('./a')
运行node a.js
将输出:
I'm parent
运行node.b.js
会输出:
I'm child
接受的答案是好的。 我从官方文档中join这个完整性:
访问主模块
当一个文件直接从Node运行时, require.main
被设置为它的module
。 这意味着您可以确定文件是否已经通过testing直接运行
require.main === module
对于文件"foo.js"
,如果通过node foo.js
运行, node foo.js
false
如果由require('./foo')
运行node foo.js
false
。
由于module
提供了一个filename
属性(通常相当于__filename
),因此可以通过检查require.main.filename
来获取当前应用程序的入口点。
这两个选项!module.parent
和require.main === module
工作。 如果您对更多的细节感兴趣,请阅读我关于此主题的详细博客文章 。