React BrowserRouter路由在Firebase部署后/route/:id无法加载问题
问题原因及解决办法
firebase.json配置结构错误
你大概率是把重写规则直接放在了hosting根节点下,而非rewrites数组内。正确的配置结构应该是:{ "hosting": { "public": "build", "ignore": [ "firebase.json", "**/.*", "**/node_modules/**" ], "rewrites": [ { "source": "**", "destination": "/index.html" } ] } }重点确认
rewrites数组是否存在,规则是否在数组中,同时public字段必须指向打包后的build文件夹。未正确打包或部署了错误目录
部署前必须先执行npm run build生成生产环境代码,且要确保Firebase部署的是build目录下的内容。如果直接部署开发源码目录,动态路由加载时会找不到正确的静态资源,导致页面空白。资源路径不匹配
如果应用部署在域名的子路径下(比如xxx.web.app/my-app),需要给BrowserRouter添加basename属性:<BrowserRouter basename="/my-app"> {/* 你的路由配置 */} </BrowserRouter>也可以在
package.json中添加"homepage": ".",让打包后的资源路径变为相对路径,避免绝对路径导致的资源加载失败。缓存残留问题
有时Firebase Hosting会缓存旧的配置或资源,部署后可以在Firebase控制台的Hosting页面点击「清除缓存」,或者执行firebase deploy --only hosting重新部署一次。
内容的提问来源于stack exchange,提问作者marouan azizi
相关产品推荐
相关产品推荐

