现有React项目构建失败求助:ENOENT文件缺失错误排查
1. 修复依赖版本冲突问题
你一开始单独执行了npm i react,但项目package.json里已经指定了react@^16.10.2和react-dom@16.10.2,单独装react可能安装更高版本,导致依赖版本不兼容,直接破坏构建环境。
操作:
- 删除项目根目录下的
node_modules文件夹、package-lock.json文件 - 执行
npm install(不要单独装react,让npm根据package.json自动安装匹配的版本)
2. 修正build脚本的命令顺序问题
你的build脚本用了&连接两个命令:
"build": "npm run rm_client & react-app-rewired build"
不管是Windows还是Linux/macOS,&都会让前一个命令后台执行,意味着删除../src/main/resources/client的操作还没完成,构建就已经启动。如果项目的rewire配置里是把构建产物输出到这个被删除的目录,就会导致路径异常;即使不是,这种并行执行也可能引发未知问题。
把&改成&&,确保前一个命令执行成功后再启动构建:
"build": "npm run rm_client && react-app-rewired build"
3. 检查react-app-rewired的自定义配置
项目用了react-app-rewired,必须有根目录下的config-overrides.js文件(如果没有,找原开发者要,这个文件应该被提交到Git,除非是本地临时配置)。
重点看这个文件里有没有修改webpack的output配置:
- 是否指定了
output.path到其他目录(比如../src/main/resources/client) - 是否修改了
output.filename或者chunk文件名的规则
如果配置里的路径不存在或者权限不足,也会导致构建时找不到生成的chunk文件。
4. 确认Node.js版本兼容
项目依赖的react-scripts@3.4.3支持的Node.js版本是10.x、12.x、14.x,如果你用的是Node.js 16+,大概率会有兼容性问题。
执行node -v查看版本,如果版本过高,建议用nvm(Node版本管理器)切换到12.x或14.x版本,再重新安装依赖并构建。
5. 排查路径解析问题
错误提示里的路径是\react-client\build\2.chunk.js,这个绝对路径看起来有问题,可能是项目中某个配置(比如publicPath、webpack output路径)写死了绝对路径,导致在你的本地环境下找不到对应目录。
检查:
public/index.html里有没有硬编码的资源路径config-overrides.js里的publicPath配置是否正确
内容的提问来源于stack exchange,提问作者ihateapachegroovy

