NodeJS 带有ES模块的PM2,错误:ERR_REQUIRE_ESM

63lcw9qa  于 11个月前  发布在  Node.js
关注(0)|答案(2)|浏览(147)

我的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.js.js格式错误
代码:'ERR_REQUIRE_ESM'

  • 当我从配置文件中删除"type": "module"部分时,它可以工作。*

我该怎么解决这个问题?
node -v : v16.13.0
pm2 -v : 5.1.2

8gsdolmq

8gsdolmq1#

ecosystem.config.jsecosystem.config.cjs

n6lpvg4x

n6lpvg4x2#

我想避免这个错误的更好的方法是在应用程序目录之外创建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"
    },

  }]
}

字符串

相关问题