如何编写可从命令行或通过 ES6 导入语句运行的 Node 脚本?
我正在使用 --experimental-modules
标志和 .mjs
扩展来将脚本作为 ES6 模块运行。
例子
假设我在 sayHello.mjs
中有以下脚本:
export default function sayHello() {
console.log(`Hello!`);
}
我希望能够通过以下两种方式使用这个脚本:
通过命令行:
node --experimental-modules sayHello.mjs
通过另一个脚本中的 ES6 导入语句:
import sayHello from './sayHello.mjs'; sayHello();
详情
我正在寻找类似于对 CommonJS 模块使用 module.main
的解决方案(这不适用于 ES6 导入):
if (require.main === module) {
console.log('run from command line');
} else {
console.log('required as a module');
}
最佳答案
你可以试试:
function sayHello() { console.log("Hello"); }
if (process.env.CL == 1){
sayHello();
} else {
export default sayHello;
}
从命令行,使用:
CL=1 node --experimental-modules sayHello.mjs
很简单,但应该可以用
另一种选择是检查 process.argv[1]
,因为它应该始终是 the filename that was specified from the commandline :
if (process.argv[1].indexOf("sayHello.mjs") > -1){
sayHello();
} else {
export default sayHello;
}
关于javascript - 通过命令行或 ES6 导入运行 Node.js 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52430702/