在我的模块中,我需要检测从命令行或其他模块调用的时间。
const isFromCLI = '????'
我正在使用Babel / ES6,所以当从命令行调用时,index.js
被调用(使用babel代码),它移交给script.js
(使用ES6代码)。因此,从脚本文件module.parent
返回module
(index.js
文件)。 所以我无法使用 module.parent
!
此外,从命令行或其他模块调用时,module.main
为undefined
(在script.js
中)。 所以我无法使用 module.main
!
这些是其他人提出的两种解决方案,但它们对我不起作用。
使用Babel / ES6时是否有一个简单的检测方法?
更新
从命令行或其他模块调用时, require.main
返回module
。
答案 0 :(得分:2)
您可以在Node中使用Process
。
https://nodejs.org/api/process.html#process_process_argv
检查第二个参数的值(执行包含类型匹配)。不确定这是否是唯一的方法,但它是实现您需要的直接方式
代码段可能是:
const isFromCLI = (process.argv[1].indexOf('my-script.js') !== -1);
答案 1 :(得分:1)
您可以使用Node Environment Variables。
您可以设置如下环境变量:
CLI=true node app.js
然后获取如下的环境变量:
const isFromCLI = process.env.CLI === 'true'
注意: process.env.CLI
将是一个字符串。
<强>更新强>
如果您想执行node app.js --cli
之类的操作,可以执行以下操作:
let isFromCLI
process.argv.forEach(function (val, index, array) {
if (array[index] === '--cli') {
isFromCLI = true
}
})
console.log(isFromCLI)