You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

npm命令并行执行失效:watch脚本仅运行server问题排查

解决npm watch脚本仅运行server的问题

你的项目根目录package.json脚本配置如下:

"scripts": {
    "server": "npm run watch --prefix server",
    "client": "npm start --prefix client",
    "watch": "npm run server & npm run client"
}

执行npm run watch时只有server服务启动,但直接把npm run server & npm run client粘到终端里却能正常同时跑两个服务,问题出在npm脚本的shell解析逻辑上。

两种解决办法


方法1:用专门的并行工具(推荐)

用concurrently包来管理并行脚本,这是前端项目里常用的方案:

  1. 先装依赖:
npm install concurrently --save-dev
  1. 修改watch脚本:
"watch": "concurrently \"npm run server\" \"npm run client\""

方法2:适配npm的shell执行规则

不想加新依赖的话,可以调整脚本写法:

  • 如果你用的是bash/zsh类终端:
"watch": "(npm run server &) && npm run client"
  • 如果是Windows的cmd终端:
"watch": "start npm run server && start npm run client"

问题原因

npm运行脚本时用的默认shell和你直接打开的终端shell行为不一样。&在终端里是把命令丢后台运行,但npm脚本环境里无法正确识别这个逻辑,会等着server脚本跑完才执行client——但server是watch模式(一直处于运行状态),所以永远不会走到启动client的步骤。而直接在终端执行时,你的shell能正确解析&,把server放后台后立刻启动client。

内容的提问来源于stack exchange,提问作者TrojanMouse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 17:01:36