Node中配置package.json同时运行两个脚本失败如何解决?
问题原因
- 你最初使用的
&&属于串行执行逻辑,必须等待前一个命令执行完成并退出后才会触发下一个命令。而parcel index.html启动的是常驻的开发预览服务进程不会主动退出,因此后续的server脚本永远不会执行。 - 直接使用
&后台执行的方式仅在类Unix系统(Mac、Linux)生效,Windows系统的cmd/PowerShell原生不支持该语法,因此会失效。 - 你运行
npm-run-all时没有加并行参数,工具默认使用串行执行逻辑,因此还是只能运行第一个脚本。
解决方法
- 首先确保你已经安装了
npm-run-all作为开发依赖,未安装的话执行以下命令:
npm install npm-run-all --save-dev
- 修改
package.json中的start脚本配置,添加--parallel参数开启并行执行:
"start": "npm-run-all --parallel dev server"
- 执行
npm start即可同时启动两个服务,两个进程的日志会同时输出到终端中。
额外说明
- 注意两个服务的监听端口不要冲突,parcel默认占用1234端口,你的
server.js需要使用其他未被占用的端口,否则其中一个服务会启动失败。 - 如果不想安装额外工具,也可以手动打开两个终端窗口,分别执行
npm run dev和npm run server,即可实现同时运行。
内容的提问来源于stack exchange,提问作者Hypothesis
相关产品推荐
相关产品推荐

