pm2 not working with experimental-modules flag

2020-06-03 07:09发布

问题:

I am using ES6 modules by adding the --experimental-modules arguments to Node. Running node --experimental-modules app.mjs works perfectly fine. However, when I run the same command with pm2 I get the following error:

Error [ERR_REQUIRE_ESM]: Must use import to load ES Module

My current pm2 config file looks like this:

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

I have also tried using esm instead like this:

"node_args": "-r esm"

In both cases they return the same [ERR_REQUIRE_ESM] error


Does anyone have a solution on how to use es6 modules with pm2 or is it broken at the moment?

回答1:

UPDATE

Starting from Node.js version 12.14.1, you don't have to add the --experimental-modules argument, so if you update node, it should work without any changes to your configuration.

ORIGINAL ANSWER

A workaround for this problem:

  • In your package.json file, add a new script:

  "scripts": {
    //Add this one:
    "safestart":"node --experimental-modules app.mjs"
  },

  • Run this PM2 command:

pm2 start npm -- run safestart



回答2:

If you do not want to update node or another approach is using esm package

See my answer here.