You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署到域名子文件夹后React Router无法正常工作的问题

解决方案:配置React Router的basename属性

你的问题出在React Router没有配置部署的基础路径(basename)。Vite的--base参数仅用于处理静态资源的加载路径,但React Router的浏览器路由需要明确知道应用部署在子目录下,才能正确匹配路由。

具体修改步骤:

在创建createBrowserRouter时,添加basename选项,值为你的部署子目录/field-logger/。

修改后的路由配置代码:

const router = createBrowserRouter(
  [
    {
        path: "/",
        element: <BaseLayout />,
        errorElement: <ErrorPage />,
        children: [
            {
                path: "/",
                element: <LogbooksPage />,
            },
            {
                path: "/logbook/:logbookId",
                element: <LogbookPage />,
            },
            {
                path: "settings",
                element: <SettingsPage />,
            },
            {
                path: "dx-cluster",
                element: <DXClusterPage />,
            }
        ]
    }
  ],
  {
    basename: "/field-logger/" // 新增这一行
  }
);

额外说明:

  1. Vite的build --base=/field-logger/配置是正确的,不需要在package.json中设置homepage字段——这个是Create React App的专属配置,Vite不识别它。
  2. 部署后如果遇到页面刷新404的问题,还需要配置服务器的SPA fallback规则(比如Nginx设置try_files $uri $uri/ /field-logger/index.html;),但你当前的路由匹配错误优先通过添加basename解决。

内容的提问来源于stack exchange,提问作者André Luiz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 03:07:37