Javascript 通过命令行或ES6导入运行Node.js脚本
如何编写可以从命令行或通过ES6导入语句运行的节点脚本 我正在使用Javascript 通过命令行或ES6导入运行Node.js脚本,javascript,node.js,node-modules,es6-modules,Javascript,Node.js,Node Modules,Es6 Modules,如何编写可以从命令行或通过ES6导入语句运行的节点脚本 我正在使用--实验模块标志和.mjs扩展以ES6模块的形式运行脚本 例子 假设我在sayHello.mjs中有以下脚本: 导出默认函数sayHello(){ log(`Hello!`); } 我希望能够通过以下两种方式使用此脚本: 通过命令行: node --experimental-modules sayHello.mjs 通过另一个脚本中的ES6导入语句: import sayHello from./sayHello.mjs';
--实验模块
标志和.mjs
扩展以ES6模块的形式运行脚本
例子
假设我在sayHello.mjs
中有以下脚本:
导出默认函数sayHello(){
log(`Hello!`);
}
我希望能够通过以下两种方式使用此脚本:
node --experimental-modules sayHello.mjs
import sayHello from./sayHello.mjs';
你好;
module.main
的解决方案(这不适用于ES6导入):
if(require.main==模块){
log('从命令行运行');
}否则{
console.log(“作为模块需要”);
}
您可以尝试:
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]
,因为它应该始终是:
if (process.argv[1].indexOf("sayHello.mjs") > -1){
sayHello();
} else {
export default sayHello;
}