Express+React项目concurrently启动报错 文件夹结构配置问题
问题原因
你的脚本路径配置和实际目录结构不匹配:
你当前的目录结构中,backend与client为同级目录,当你在/backend目录下执行命令时,当前工作目录就是backend文件夹,此时你配置的"client": "cd client && yarn start"命令会尝试进入backend文件夹下的client子目录,但这个目录实际不存在,因此会抛出No such file or directory的报错。
当你把backend的所有文件移到和client同级的根目录时,根目录下直接存在client文件夹,此时cd client就能匹配到实际路径,所以命令可以正常运行。你之前清理依赖、重装包的操作和这个问题无关,自然无法解决。
修复方案
方案1:修改backend的package.json脚本路径
把backend目录下package.json里的client脚本修改为向上跳转一级目录再进入client:
{ "scripts": { "client": "cd ../client && yarn start", "server": "nodemon server.js", "dev": "concurrently --kill-others-on-fail \"yarn server\" \"yarn client\"" } }
修改后在backend目录下执行yarn dev即可正常启动前后端服务。
方案2:根目录统一管理启动命令(更推荐)
你可以在backend和client的上级根目录新建一个package.json,统一管理全项目的脚本,避免相对路径跳转的混乱:
{ "name": "yelp-clone-2", "license": "MIT", "version": "1.0.0", "scripts": { "client": "cd client && yarn start", "server": "cd backend && nodemon server.js", "dev": "concurrently --kill-others-on-fail \"yarn server\" \"yarn client\"" }, "devDependencies": { "concurrently": "^4.0.1" } }
之后在根目录执行yarn install安装concurrently,再执行yarn dev即可启动服务,结构更清晰,后续维护也更方便。
内容的提问来源于stack exchange,提问作者Halp_am_stuck
相关产品推荐
相关产品推荐

