首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NodeJS -当从命令行(ES6 +Babel)调用时,我能检测到吗..?

NodeJS -当从命令行(ES6 +Babel)调用时,我能检测到吗..?
EN

Stack Overflow用户
提问于 2017-03-10 14:08:23
回答 2查看 182关注 0票数 1

在我的模块中,我需要检测何时从命令行或从另一个模块调用它。

代码语言:javascript
运行
复制
const isFromCLI = '????'

我使用的是Babel/ ES6,所以当从命令行调用时,index.js被调用(使用babel代码),这将传递给script.js (使用ES6代码)。因此,从脚本文件中,module.parent返回module ( index.js文件)。所以我不能用 module.parent

此外,当从命令行或从另一个模块调用时,module.mainundefined (在script.js中)。所以我不能用 module.main

这是其他人提出的两种解决方案,但它们对我不起作用。

在使用Babel/ES6.时,是否有简单的检测方法?

更新

当从命令行或从另一个模块调用时,require.main返回module

EN

回答 2

Stack Overflow用户

发布于 2017-03-10 14:24:33

您可以在Node中使用Process

阿格夫

检查第二个参数的值(执行包含类型匹配)。不确定这是否是唯一的方法,但这是一种直接的方式来达到你的需要

代码片段可能是:

代码语言:javascript
运行
复制
 const isFromCLI = (process.argv[1].indexOf('my-script.js') !== -1);
票数 2
EN

Stack Overflow用户

发布于 2017-03-10 14:45:51

您可以使用节点环境变量

您可以设置如下环境变量:

CLI=true node app.js

然后得到这样的环境变量:

const isFromCLI = process.env.CLI === 'true'

注意: process.env.CLI将是一个字符串。

更新:

如果要执行类似node app.js --cli的操作,可以执行以下操作:

代码语言:javascript
运行
复制
let isFromCLI

process.argv.forEach(function (val, index, array) {
  if (array[index] === '--cli') {
    isFromCLI = true
  }
})

console.log(isFromCLI)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42720323

复制
相关文章

相似问题

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