首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >检测是否通过require或直接通过命令行调用

检测是否通过require或直接通过命令行调用
EN

Stack Overflow用户
提问于 2011-06-19 02:56:08
回答 4查看 51.5K关注 0票数 360

如何检测是否使用SH:node path-to-file或JS:require('path-to-file')调用了我的Node.JS文件

这是我之前用Perl提出的问题的Node.JS等价物:How can I run my Perl script only if it wasn't loaded with require?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-06-19 03:20:35

代码语言:javascript
复制
if (require.main === module) {
    console.log('called directly');
} else {
    console.log('required as a module');
}

请参阅此处的文档:https://nodejs.org/docs/latest/api/modules.html#modules_accessing_the_main_module

票数 577
EN

Stack Overflow用户

发布于 2013-03-04 01:08:29

还有另一种更短的方法(没有在提到的文档中列出)。

var runningAsScript = !module.parent;

我在this blog post中概述了有关这一切如何在幕后工作的更多细节。

票数 103
EN

Stack Overflow用户

发布于 2017-03-04 03:43:53

我对解释中使用的术语感到有点困惑。所以我得做几个快速测试。

我发现这些都会产生相同的结果:

代码语言:javascript
复制
var isCLI = !module.parent;
var isCLI = require.main === module;

对于其他困惑的人(直接回答这个问题):

代码语言:javascript
复制
var isCLI = require.main === module;
var wasRequired = !isCLI;
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6398196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档