【问题标题】:404 Error on refresh with SPA React Router app in GitHub Pages在 GitHub Pages 中使用 SPA React Router 应用程序刷新时出现 404 错误
【发布时间】:2020-12-07 07:07:11
【问题描述】:
【问题讨论】:
标签:
reactjs
single-page-application
github-pages
【解决方案2】:
您可以尝试解决此问题的一种方法是在 App.js 中将 Switch 替换为 HashRouter 。这将更改您的 URL,但它应该可以解决您的 github 页面的 404 问题。如果您需要更深入地解释为什么会发生这种情况read this reply。
所以你更新后的App.js 应该是这样的:
import React, { Component } from "react";
import { HashRouter, Route } from "react-router-dom";
import Emoji from "react-emoji-render";
import "./App.css";
//Pages
import Projects from "./Projects.js";
import About from "./About.js";
import Critterpedia from "./Critterpedia.js";
import Bluenotes from "./Bluenotes.js";
import Formally from "./Formally.js";
//Components
import visualize from "./Images/visualize-actualize.png";
import ScrollToTop from "./ScrollToTop.js";
class App extends Component {
render() {
return (
<div>
<ScrollToTop />
<HashRouter>
<Route exact path="/" component={Projects} />
<Route path="/about" component={About} />
<Route path="/critterpedia" component={Critterpedia} />
<Route path="/bluenotes" component={Bluenotes} />
<Route path="/formally" component={Formally} />
</HashRouter>
<div className="footer">
<div className="emoji">
<Emoji text="?" />
</div>
<div className="intro-icon">
<div className="img-div">
<img src={visualize} alt="visualize and actualize" />
</div>
</div>
<div className="credit">
<div className="footer-links">
<a href="https://github.com/christinexlin">GitHub</a>
<a href="https://www.linkedin.com/in/christine-lin-01/">
LinkedIn
</a>
<a href="https://twitter.com/christinexlin">Twitter</a>
</div>
<p>
Made with <Emoji text="?" />
by Christine Lin
</p>
</div>
</div>
</div>
);
}
}
export default App;
让我知道这是否适合你
【解决方案3】:
为了让它工作,我所做的只是在我的 GitHub Pages 部署管道中添加一个步骤,将 index.html 复制到 404.html,然后让我的路由器处理剩下的事情。
请注意,这仍会导致路由返回 404 状态,因此 SEO 或 CLI ping 会认为请求失败。