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

React项目本地可运行但GitHub Pages部署后无法启动求助

问题:React项目本地正常但部署到GitHub Pages后无法运行

我用React JS构建的movie-app项目在本地localhost环境下能正常运行,但部署到GitHub Pages后,尽管代码已成功推送至仓库,应用却无法正常运行。部署后的项目地址为xcage88.github.io/movie-app。

项目配置文件(package.json)

{
  "name": "movie-app",
  "version": "0.1.0",
  "homepage": "http://xcage88.github.io/movie-app",
  "private": true,
  "dependencies": {
    "@fortawesome/fontawesome-svg-core": "^6.2.1",
    "@fortawesome/free-solid-svg-icons": "^6.2.1",
    "@fortawesome/react-fontawesome": "^0.2.0",
    "@testing-library/jest-dom": "^5.16.5",
    "@testing-library/react": "^13.4.0",
    "@testing-library/user-event": "^13.5.0",
    "bootstrap": "^5.2.3",
    "gh-pages": "^5.0.0",
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "react-scripts": "5.0.1",
    "web-vitals": "^2.1.4"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject",
    "predeploy": "npm run build",
    "deploy": "gh-pages -d build"
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "devDependencies": {
    "react-router-dom": "^6.8.0"
  }
}

核心代码

App.js

import { Route, Routes } from 'react-router-dom';
import SignUp from './component/SignUp';
import ForgotForm from './component/ForgotForm';
import LoginForm from './component/LoginForm';
import MainPage from './component/MainPage';

function App() {
  return (
    <div>
      <div>
        <Routes>
          <Route path='/' exact element={<LoginForm/>}/>
          <Route path='/forgot' element={<ForgotForm/>}/>
          <Route path='/sign-up' element={<SignUp/>}/>
          <Route path='/main/*' element={<MainPage/>}/>
        </Routes>
      </div>
    </div>
  );
}

export default App;

index.js

import React from 'react';
import ReactDOM from 'react-dom/client';
import './style/style.css'
import 'bootstrap/dist/css/bootstrap.css'
import 'bootstrap/dist/js/bootstrap.bundle'
import reportWebVitals from './reportWebVitals';
import {BrowserRouter} from 'react-router-dom'

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <React.StrictMode>
    <BrowserRouter>
      <App />
    </BrowserRouter>
  </React.StrictMode>
);

效果对比

  • 本地运行:正常显示登录界面,路由跳转功能正常
  • GitHub Pages部署后:页面无法正常加载组件,显示异常

解决方案

1. 配置React Router的基础路径

GitHub Pages部署的项目位于子路径/movie-app下,React Router默认使用根路径,导致路由无法匹配。修改index.js中的BrowserRouter,添加basename属性:

<BrowserRouter basename="/movie-app">
  <App />
</BrowserRouter>

2. 检查静态资源引用

确保项目中所有静态资源(图片、字体等)的引用使用相对路径,或通过process.env.PUBLIC_URL拼接路径,例如:

<img src={`${process.env.PUBLIC_URL}/images/logo.png`} alt="Logo" />

3. 重新部署

修改完成后,执行以下命令重新部署到GitHub Pages:

npm run deploy

内容的提问来源于stack exchange,提问作者Hovi Sohibul Wafa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 19:01:28