特定文件夹结构下使用concurrently同时运行前后端报错求助
问题分析
错误根源很明确:你将concurrently配置在backend的package.json中,执行npm run dev时当前工作目录是backend文件夹。但你的脚本里:
start-server用了npm start --prefix backend,会让npm去backend/backend路径下找package.json,该路径不存在start-client用了npm start --prefix frontend,会让npm去backend/frontend路径下找package.json,同样不存在(frontend和backend是同级目录)
正确脚本配置
修改backend/package.json里的scripts部分,调整路径指向即可:
"scripts": { "start": "nodemon server.js", "start-server": "npm start", // 当前已在backend目录,直接启动后端 "start-client": "npm start --prefix ../frontend", // 回到上级目录定位frontend "dev": "concurrently \"npm run start-server\" \"npm run start-client\"" }
另一种等价写法(用cd切换目录)
"scripts": { "start": "nodemon server.js", "start-server": "npm start", "start-client": "cd ../frontend && npm start", "dev": "concurrently \"npm run start-server\" \"npm run start-client\"" }
额外建议
如果你的项目根目录(backend和frontend的父目录)有package.json,更推荐把concurrently配置在根目录的package.json里,路径逻辑会更清晰:
"scripts": { "start-server": "npm start --prefix backend", "start-client": "npm start --prefix frontend", "dev": "concurrently \"npm run start-server\" \"npm run start-client\"" }
注意:确保已在对应目录安装concurrently,比如在backend目录执行npm install --save-dev concurrently,或在根目录执行npm install --save-dev concurrently。
内容的提问来源于stack exchange,提问作者Shiv Shankar Prasad
相关产品推荐
相关产品推荐

