【问题标题】:Run Node.js script via command line or ES6 import通过命令行或 ES6 导入运行 Node.js 脚本
【发布时间】:2020-06-04 11:58:46
【问题描述】:

如何编写可以从命令行或通过 ES6 导入语句运行的 Node 脚本?

我正在使用 --experimental-modules 标志和 .mjs 扩展来将脚本作为 ES6 模块运行。

示例

假设我在sayHello.mjs 中有以下脚本:

export default function sayHello() {
  console.log(`Hello!`);
}

我希望能够通过以下两种方式使用此脚本:

  1. 通过命令行:

    node --experimental-modules sayHello.mjs
    
  2. 通过另一个脚本中的 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');
}

【问题讨论】:

    标签: javascript node.js node-modules es6-modules


    【解决方案1】:

    你可以试试:

    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;
    }
    

    【讨论】:

      猜你喜欢
      • 2017-09-13
      • 1970-01-01
      • 2014-05-11
      • 2018-08-23
      • 2021-03-20
      • 2018-08-02
      • 2019-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多