PM2 带 ES 模块。错误:ERR_REQUIRE_ESM

问题描述 投票:0回答:2

我的 package.json 文件看起来像这样:

{
...
  "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"
  },
...
}

如你所见,我已经通过

"type": "module",
激活了ES模块。

还有 ecosystem.config.js 文件:

module.exports = {
  apps : [{
    name   : "app1",
    script : "./app.js",
    env_production: {
       NODE_ENV: "production"
    },
    env_development: {
       NODE_ENV: "development"
    }
  }]
}

所以,当我运行脚本时

npm run devStart
发生错误。

文件 Ecosystem.config.js 格式错误

代码:'ERR_REQUIRE_ESM'

当我从配置文件中删除

"type": "module"
部分时它就可以工作。

我该如何解决这个问题?

node -v : v16.13.0

pm2 -v : 5.1.2

javascript node.js es6-modules pm2
2个回答
8
投票

ecosystem.config.js
重命名为
ecosystem.config.cjs


0
投票

我想避免这个错误的更好方法是在应用程序目录之外创建ecosystem.config.js,PM2看不到package.json文件。我只能使用这种方式运行我的ecosystem.config,并且还修复了运行脚本的路径。示例:

module.exports = { 
 apps : [{
    name   : "nuxt3_app",
    script : "myApp/.output/server/index.mjs",
    interpreter: "node",
    env: {
       DATABASE_URL: "mysql://root:root@localhost:3306/db"
    },

  }]
}
© www.soinside.com 2019 - 2024. All rights reserved.