Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

pm2 not working with experimental-modules flag

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?

like image 845
user2600769 Avatar asked Sep 25 '18 13:09

user2600769


1 Answers

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
like image 184
Erez Shlomo Avatar answered Sep 17 '22 00:09

Erez Shlomo