如何让npm start后台并行运行json-server与react-scripts?
解决npm start同时并行运行json-server和react-scripts的问题
问题原因
你之前的配置在Windows环境下无效,核心原因是:
- 单个
&在Windows cmd中仅用于分隔顺序执行的命令,无法让json-server后台运行,它会一直占用终端,导致后续的react-scripts无法启动。 prestart脚本会阻塞直到执行完成,但json-server是常驻进程,永远不会结束,因此start脚本永远不会被触发。
推荐解决方案:使用concurrently工具
这是前端项目中并行运行多个脚本的标准方案,无需依赖系统命令的差异:
- 安装依赖
npm install concurrently --save-dev
- 修改package.json的scripts配置
"scripts": { "start": "concurrently \"json-server --watch ../sample-db.json --port 3010 --delay 800\" \"set HTTPS=true&&react-scripts start\"" }
- 引号用于包裹每个独立的命令,确保concurrently能正确识别两个任务。
- 如果需要跨平台兼容(同时支持Windows/macOS/Linux),可以用
cross-env替换set来统一设置环境变量:
先安装cross-env:npm install cross-env --save-dev
再修改脚本:"start": "concurrently \"json-server --watch ../sample-db.json --port 3010 --delay 800\" \"cross-env HTTPS=true react-scripts start\""
无依赖替代方案(Windows专属)
如果你不想额外安装包,可以用Windows的start命令让json-server在新窗口后台运行:
"scripts": { "start": "start \"JSON Server\" json-server --watch ../sample-db.json --port 3010 --delay 800 && set HTTPS=true&&react-scripts start" }
这种方式会弹出单独的命令行窗口运行json-server,主窗口运行react-scripts。
内容的提问来源于stack exchange,提问作者simonfanz
相关产品推荐
相关产品推荐

