My package.json file looks something like this:
{
...
"main": "index.js",
"type": "module",
"scripts": {
"devStart": "pm2 start ecosystem.config.js --env dev --watch",
"prodStart": "pm2 start ecosystem.config.js --env prod --watch",
"reload": "pm2 reload ecosystem.config.js",
"stop": "pm2 stop ecosystem.config.js",
"end": "pm2 delete ecosystem.config.js"
},
...
}
I have activated ES modules by "type": "module",
as you see.
And the ecosystem.config.js file:
module.exports = {
apps : [{
name : "app1",
script : "./app.js",
env_production: {
NODE_ENV: "production"
},
env_development: {
NODE_ENV: "development"
}
}]
}
So, when I run the script npm run devStart
an error occurs.
File ecosystem.config.js malformated
code: 'ERR_REQUIRE_ESM'
It works when I just remove the "type": "module"
part from config file.
How can I solve this?
node -v : v16.13.0
pm2 -v : 5.1.2
My package.json file looks something like this:
{
...
"main": "index.js",
"type": "module",
"scripts": {
"devStart": "pm2 start ecosystem.config.js --env dev --watch",
"prodStart": "pm2 start ecosystem.config.js --env prod --watch",
"reload": "pm2 reload ecosystem.config.js",
"stop": "pm2 stop ecosystem.config.js",
"end": "pm2 delete ecosystem.config.js"
},
...
}
I have activated ES modules by "type": "module",
as you see.
And the ecosystem.config.js file:
module.exports = {
apps : [{
name : "app1",
script : "./app.js",
env_production: {
NODE_ENV: "production"
},
env_development: {
NODE_ENV: "development"
}
}]
}
So, when I run the script npm run devStart
an error occurs.
File ecosystem.config.js malformated
code: 'ERR_REQUIRE_ESM'
It works when I just remove the "type": "module"
part from config file.
How can I solve this?
node -v : v16.13.0
pm2 -v : 5.1.2
2 Answers
Reset to default 16Rename ecosystem.config.js
to ecosystem.config.cjs
I guess that the better way to avoid this error is creating the ecosystem.config.js outside the app directory that PM2 couldn't see the package.json file. I could run my ecosystem.config only use this way and also fixed a path for running script. Example :
module.exports = {
apps : [{
name : "nuxt3_app",
script : "myApp/.output/server/index.mjs",
interpreter: "node",
env: {
DATABASE_URL: "mysql://root:root@localhost:3306/db"
},
}]
}
require()
. It seems PM2 doesn't support ES Modules yet. But I find a temporary solution for this, here: github.com/nodejs/modules/issues/293 – Sha'an Commented Nov 25, 2021 at 20:09