我现在的项目是完全ES6 +,具有导入/导出功能,而node.js尚不支持此功能,因此我使用nodemon + babel来运行它。 package.json如下:
"scripts": {
"start": "nodemon server/server.js --exec babel-node --presets babel-preset-env"
}
现在我要移至pm2来管理此应用程序,我具有以下ecosystem.config.js:
module.exports = {
apps: [
{
name: 'test:app',
script: 'npm -- start',
watch: true,
},
],
};
这会启动应用程序,但会出现以下错误:
3|your-tab | Error: EBADF: bad file descriptor, uv_pipe_open
3|your-tab | at Object._forkChild (child_process.js:115:5)
3|your-tab | at Object.setupChildProcessIpcChannel (internal/process/main_thread_only.js:117:30)
3|your-tab | at startup (internal/bootstrap/node.js:135:23)
3|your-tab | at bootstrapNodeJSCore (internal/bootstrap/node.js:739:3)
3|your-tab | child_process.js:115
3|your-tab | p.open(fd);
我认为我的生态系统文件是错误的,但是如何解决它以便可以运行pm2 + babel + nodemon?
答案 0 :(得分:0)
生态系统配置中应用程序的脚本选项必须是存在的路径。
有一些方法可以为应用程序进行生态系统配置。
您可以编写一个节点脚本来启动您的应用程序,并将其用于脚本选项。您可能会为此使用“ child_process”节点模块。
您可以将应用程序的解释器配置为bash。然后编写一个bash脚本来运行您的应用程序。
假设您有一个run-yap
bash shell脚本,其中包含:
npm start
生态系统配置文件应如下所示:
module.exports = {
apps: [
{
script: "run-yap",
name: "yap",
interpreter: "bash",
}
]
}