【问题标题】:pm2 not working with experimental-modules flagpm2 不使用实验模块标志
【发布时间】:2019-03-01 04:02:34
【问题描述】:

我通过向 Node.js 添加 --experimental-modules 参数来使用 ES6 模块。运行 node --experimental-modules app.mjs 工作得非常好。但是,当我使用 pm2 运行相同的命令时,出现以下错误:

错误 [ERR_REQUIRE_ESM]: 必须使用 import 来加载 ES 模块

我当前的 pm2 配置文件如下所示:

"apps": [
 {
  "name": "api",
  "script": "app.mjs",
  "exec_mode": "cluster",
  "instances": "max",
  "node_args": "--experimental-modules",
  "env": {
    variables here..
  }
 }
],

我也尝试过像这样使用 esm:

"node_args": "-r esm"

在这两种情况下,它们都返回相同的 [ERR_REQUIRE_ESM] 错误


有没有人有关于如何将 es6 模块与 pm2 一起使用的解决方案,或者它目前是否损坏?

【问题讨论】:

标签: javascript node.js pm2 es6-modules


【解决方案1】:

更新

从 Node.js 版本 12.14.1 开始,您不必添加 --experimental-modules 参数,因此如果您更新节点,它应该可以在不更改您的配置的情况下工作。

原始答案

解决此问题的方法:

  • 在您的 package.json 文件中,添加一个新脚本:

  "scripts": {
    //Add this one:
    "safestart":"node --experimental-modules app.mjs"
  },
  • 运行这个 PM2 命令:

pm2 start npm -- run safestart

【讨论】:

  • 请分享如何使用 pm2 运行 index.mjs。上面的示例对我不起作用。
  • 请检查我为答案提供的更新@YuriyTigiev
  • 我已经安装了 pm2@4.2.3 并且没有任何改变
  • 使用最新的 lts 版本 v14.15.0 在 package.json 中使用 "type": "module" 并使用生态系统.config.cjs(注意 .cjs 扩展名)。
【解决方案2】:

如果您不想更新节点或其他方法正在使用esm package

看我的回答here.

【讨论】:

    猜你喜欢
    • 2022-01-23
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多