使用concurrently同时启动客户端与服务端失败,提示找不到index.js模块
嘿,我之前也踩过类似的坑,结合你的配置咱们一步步捋:
脚本执行的工作目录不匹配
看你的项目结构应该是根目录下分了server和client子文件夹吧?如果服务端的index.js在server文件夹里,但根目录package.json里的server脚本直接写了nodemon index.js,那运行时nodemon会在根目录找index.js,自然找不到。解决办法有两种:// 方法1:直接指定服务端index.js的路径 "server": "nodemon server/index.js" // 方法2:进入服务端目录执行脚本(适合服务端有独立package.json的情况) "server": "npm run server --prefix server"文件名/路径的大小写或拼写错误
如果你用的是Linux或macOS系统,文件名是大小写敏感的!比如不小心把index.js写成Index.js,或者脚本里的路径写错了(比如把./index.js写成../index.js),都会触发这个错误。先去对应的目录下确认文件的实际名称和路径是否和脚本里的一致。concurrently的执行上下文问题
用concurrently同时跑两个脚本时,每个脚本默认在当前终端的工作目录执行。比如你如果在client文件夹里运行npm run dev,但dev脚本定义在根目录的package.json里,那服务端脚本会尝试在client目录找index.js,肯定找不到。一定要确保你是在项目根目录下运行npm run dev。文件实际不存在或被移动
最后最基础的排查:直接去脚本期望的路径下看看index.js是不是真的存在?有没有不小心删除、或者挪到其他子文件夹里了?
另外提一句,你的客户端proxy配置指向了localhost:5000,但服务端代码里的端口是3000或环境变量,后续启动成功后可能会遇到跨域问题,记得把端口统一哦~
内容的提问来源于stack exchange,提问作者oneone

