我的 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
将
ecosystem.config.js
重命名为 ecosystem.config.cjs
我想避免这个错误的更好方法是在应用程序目录之外创建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"
},
}]
}