使用PM2启动Vue.js应用时仅启动空进程的问题排查
解决PM2启动Vue.js应用失败的问题
问题根源
你遇到的“script not found”错误,核心原因是你使用的PM2命令指定了start或dev脚本,但你的package.json里根本没有这两个脚本——当前scripts仅包含serve、build、lint。另外部分PM2命令的参数格式错误,导致进程启动后应用无法正常运行。
正确的PM2启动命令
根据你的package.json配置,直接调用serve脚本即可启动应用,以下是几个可用的正确命令:
- 基础启动(运行serve脚本):
pm2 start npm -- run serve
--用于分隔PM2参数与npm参数,后面的run serve是告诉npm执行serve脚本。
- 带文件监听模式(文件变化时自动重启应用):
pm2 start npm --watch -- run serve
--watch是PM2的参数,必须放在--之前,确保PM2能识别该配置。
- 指定应用名称(方便后续管理进程):
pm2 start npm --name "vue-app" -- run serve
--name属于PM2参数,需放在--前面,后续跟npm的执行命令run serve。
- 需sudo权限的启动方式:
sudo pm2 start npm --name "vue-app" -- run serve
sudo环境下仍需遵循PM2参数在前、npm命令在后的格式,避免参数混乱。
你之前的命令错误点
pm2 start npm -- serve:缺少run关键字,npm执行自定义脚本必须加run,正确写法是-- run serve。pm2 start npm --watch -- run dev:你的package.json中没有dev脚本,需替换为serve。pm2 start npm --name "vue-app" -- start:package.json无start脚本,且缺少run,应改为-- run serve。sudo pm2 start npm run serve --name vue-app -- start:参数顺序错误,PM2的--name参数需放在--之前,且末尾多余的start完全无效。
是否需要修改package.json?
不需要修改。你的package.json中serve脚本配置正确,只要用对PM2命令就能正常启动应用。如果想简化命令(比如省略run serve),可以选择在scripts中新增start别名:
"scripts": { "serve": "vue-cli-service serve", "start": "vue-cli-service serve", // 新增start作为serve的别名 "build": "vue-cli-service build", "lint": "vue-cli-service lint" },
这样就可以用pm2 start npm -- start启动,但这只是可选的简化操作,并非必须。
内容的提问来源于stack exchange,提问作者user16779293
相关产品推荐
相关产品推荐

