package.json中deploy脚本仅启动server问题求助
问题原因与解决方法
原因
npm 运行脚本时,默认会在独立的 shell 环境中执行。当你用 & 将 npm run server 放到后台后,npm 会判定当前脚本的主执行流程已完成,直接终止脚本进程,导致后续的 npm run client 根本没机会启动。而你直接在终端执行命令时,是在当前 shell 环境下操作,& 仅将进程转入后台,当前 shell 会继续执行后续命令。
解决方案
方法1:使用专门的多命令运行工具(推荐)
安装 concurrently 包,它是专门用于同时启动多个进程的工具,能稳定管理多个命令的生命周期:
npm install concurrently --save-dev
修改 package.json 中的 deploy 脚本:
"deploy": "concurrently \"npm run server\" \"npm run client\""
方法2:强制使用 bash 执行脚本
如果不想额外安装包,可以强制让 npm 用 bash 来执行命令,保证 & 的行为和终端一致:
"deploy": "bash -c 'npm run server & npm run client'"
内容的提问来源于stack exchange,提问作者Santiago
相关产品推荐
相关产品推荐

