如何在ecosystem.config.js中配置PM2运行自定义npm dev脚本
PM2 运行npm自定义dev脚本的正确配置方案
核心原因说明
npm的start是内置特殊脚本,执行npm start等价于npm run start,但其他自定义脚本(比如dev)必须显式携带run参数执行,你之前的配置失败分别对应以下问题:
- 第一种配置错误:
script字段仅支持填写可执行文件名称/路径,不能携带参数,PM2会尝试查找名为npm run dev的可执行文件,必然不存在 - 第三种配置错误:
dev不是npm的顶级内置命令,直接传args: 'dev'等价于执行npm dev,不存在该命令 - 第二种配置本身逻辑正确,若运行失败大概率是遗漏了其他配套配置项
正确配置方案
1. 命令行直接执行
pm2 start npm -- run dev
2. ecosystem.config.js 标准配置
module.exports = { apps : [{ name: "your-dev-app", script: "npm", args: "run dev", // 必须正确指定package.json所在的工作目录 cwd: "./your-project-path", // Windows系统下可替换为以下配置解决npm路径识别问题 // script: "npm.cmd", // args: "run dev" }] }
更稳定的替代方案
避免通过npm中转进程,直接指定实际执行的入口文件,性能更高、报错更直观:
比如你的package.json中dev脚本配置为"dev": "nodemon src/index.js",可以直接写配置:
... script: "src/index.js", interpreter: "nodemon", cwd: "./your-project-path", ...
常见排查点
- 先直接在项目目录执行
npm run dev,确认脚本本身可以正常运行 - 确认
cwd配置项指向的目录存在package.json,且包含dev脚本声明 - Windows环境优先尝试使用
npm.cmd作为script值
内容的提问来源于stack exchange,提问作者iMyke
相关产品推荐
相关产品推荐

