react router v6 项目构建部署后出现 `404` 加载 chunk 文件失败,根本原因是 webpack 打包时生成的静态资源路径(如 `/scenarioplanning/static/js/...`)被错误地相对化,需通过配置 `homepage` 字段或服务器重写规则修复。
该问题并非由 proxy 字段解决——您在答案中提到的 "proxy": "http://127.0.0.1:5000" 仅在开发阶段(npm start)生效,用于代理 API 请求,对生产构建(npm run build)完全无效,也无法修正静态资源路径。实际报错 http://localhost:5000/scenarioplanning/static/js/251.400bc25d.chunk.js 表明:Webpack 将 public 下的资源(如 JS/CSS)按当前路由路径做了相对解析,导致子路径下资源请求路径错误。
✅ 正确解决方案如下:
在 package.json 中添加:
{
"homepage": "/"
}✅ 原理:homepage: "/" 告诉 Create React App 所有静态资源(、、public/ 中图片等)均以绝对根路径(/static/js/...)加载,与当前 URL 路径无关。 ⚠️ 注意:若部署在子路径(如 https://example.com/my-app/),则应设为 "homepage": "/my-app/",并同步配置 。
若使用 craco 或 react-app-rewired,可在 craco.config.js 中覆盖 output.publicPath:
module.exports = {
webpack: {
configure: (config) => {
config.output.publicPath = '/';
return config;
}
}
};location / {
try_files $uri $uri/ /index.html;
}npx serve -s build
它会自动处理所有路径回退到 index.html,且默认以 / 为资源根路径。
构建后检查 build/index.html 中的 script 标签:
? 总结:
