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

GitHub Pages部署React应用时Home组件不显示问题

问题根因

你使用HashRouter做路由管理时,错误将Home组件的路由路径设置为了GitHub Pages部署的子路径/bad_bank,和HashRouter的匹配逻辑冲突:

  • HashRouter的路由匹配仅针对URL中#后的哈希片段生效,完全不会读取package.json中homepage字段配置的域名子路径。
  • 部署完成后访问站点根地址时,URL的哈希片段默认是空值或/,无法匹配你设置的/bad_bank路径,因此Home组件无法渲染。
  • 其余组件的路由路径均为哈希根下的一级路径(如/CreateAccount、/login),访问对应哈希地址时可以正常匹配,因此能正常显示。
修复方案

推荐使用符合单页应用路由习惯的根路径匹配方案,修正后的核心路由代码如下:

// 记得先从react-router-dom导入需要的路由组件
import { Routes, Route, Navigate, HashRouter } from 'react-router-dom'

function Spa() {
  return (
    <HashRouter>
      <NavBar/>
      <UserContext.Provider value={{users:[{name:'abel',email:'abel@mit.edu',password:'secret',balance:100, loggedin: false}]}}>
        <div className="container" style={{padding: "20px"}}>
         <Routes>
          {/* 标记Home为根路径默认匹配的首页组件 */}
          <Route index path="/" element={<Home />} />
          <Route path="/CreateAccount/" element={<CreateAccount/>} />
          <Route path="/login/" element={<Login/>} />
          <Route path="/deposit/" element={<Deposit/>} />
          <Route path="/withdraw/" element={<Withdraw/>} />
          <Route path="/alldata/" element={<AllData/>} />
          {/* 可选:兼容旧路径/bad_bank,访问时自动跳转回首页 */}
          <Route path="/bad_bank" element={<Navigate to="/" replace />} />
          </Routes>
        </div>
      </UserContext.Provider>      
    </HashRouter>
  );
}

root.render(<Spa/>);

注意:如果后续切换为BrowserRouter部署,只需要给Router组件添加basename="/bad_bank"属性即可,不需要将子路径前缀写到每一个Route的path配置中,避免后续修改部署路径时需要全量调整路由代码。

内容的提问来源于stack exchange,提问作者Isabela Bertani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 11:33:12