dwh*_*ieb 5 javascript node.js node-modules es6-modules
如何编写可以从命令行或通过 ES6 导入语句运行的 Node 脚本?
我正在使用--experimental-modules标志和.mjs扩展来将脚本作为 ES6 模块运行。
假设我有以下脚本sayHello.mjs:
export default function sayHello() {
console.log(`Hello!`);
}
Run Code Online (Sandbox Code Playgroud)
我希望能够通过以下两种方式使用此脚本:
通过命令行:
node --experimental-modules sayHello.mjs
Run Code Online (Sandbox Code Playgroud)通过另一个脚本中的 ES6 导入语句:
node --experimental-modules sayHello.mjs
Run Code Online (Sandbox Code Playgroud)我正在寻找类似于module.main用于 CommonJS 模块的解决方案(这不适用于 ES6 导入):
import sayHello from './sayHello.mjs';
sayHello();
Run Code Online (Sandbox Code Playgroud)
你可以尝试:
function sayHello() { console.log("Hello"); }
if (process.env.CL == 1){
sayHello();
} else {
export default sayHello;
}
Run Code Online (Sandbox Code Playgroud)
从命令行,使用:
CL=1 node --experimental-modules sayHello.mjs
Run Code Online (Sandbox Code Playgroud)
很简单,但应该可以工作
另一个选项是检查,process.argv[1]因为它应该始终是从命令行指定的文件名:
if (process.argv[1].indexOf("sayHello.mjs") > -1){
sayHello();
} else {
export default sayHello;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3220 次 |
| 最近记录: |