Reactjs GitHub页面主页子域抛出404
我将React应用程序部署到Github页面作为主页 问题是我无法直接访问/home或任何子域,也无法刷新其中的页面。它抛出404。但应用程序内部的重定向是有效的,如果您在登录页上等待动画完成,您可以访问/主页 我检查过了,我的其他存储库没有在/home下注册 有人能告诉我为什么吗?我应该如何解决这个问题 更新: React路由器配置为:Reactjs GitHub页面主页子域抛出404,reactjs,github-pages,Reactjs,Github Pages,我将React应用程序部署到Github页面作为主页 问题是我无法直接访问/home或任何子域,也无法刷新其中的页面。它抛出404。但应用程序内部的重定向是有效的,如果您在登录页上等待动画完成,您可以访问/主页 我检查过了,我的其他存储库没有在/home下注册 有人能告诉我为什么吗?我应该如何解决这个问题 更新: React路由器配置为: import React, { Component } from 'react'; import { BrowserRouter as Router, Swi
import React, { Component } from 'react';
import { BrowserRouter as Router, Switch, Route } from "react-router-dom";
import Preloader from './components/Preloader';
import Home from './components/Home';
import './App.scss';
class App extends Component {
render() {
return (
<Router>
<React.Fragment>
<Switch>
<Route path="/" exact component={Preloader} />
<Route path="/home" component={Home} />
</Switch>
</React.Fragment>
</Router>
);
}
}
export default App;
import React,{Component}来自'React';
从“react Router dom”导入{BrowserRouter as Router,Switch,Route};
从“./组件/预加载程序”导入预加载程序;
从“./components/Home”导入Home;
导入“/App.scss”;
类应用程序扩展组件{
render(){
返回(
);
}
}
导出默认应用程序;
解决方案1
如本文所示
您应该使用HashRouter
,以避免在刷新页面时在GitHub页面上出现404错误
根据:
哈希路由器
使用URL哈希部分的路由器(即。
window.location.hash)以使您的UI与URL保持同步
重要注意事项:哈希历史记录不支持location.key或
位置。状态。在以前的版本中,我们尝试填充行为
但有些边缘案例我们无法解决。任何代码或插件
这种行为行不通。因为这种技术只是为了
支持传统浏览器,我们鼓励您将服务器配置为
与你一起工作
尝试使用以下内容更新导入语句:
从“react Router dom”导入{HashRouter as Router,Switch,Route};
解决方案2
更好的解决方案可能是配置服务器以正确处理路由。查看以下内容,说明如何使用express:
const express=require('express'))
const path=require('路径')
const port=process.env.port | | 8080
const app=express()
//正常使用静态资产
app.use(express.static(u dirname+'/public'))
//使用index.html处理其他每一条路由,其中将包含
//应用程序JavaScript文件的脚本标记。
app.get('*',函数(请求,响应){
response.sendFile(path.resolve(_dirname,'public','index.html'))
})
应用程序侦听(端口)
log(“服务器在端口上启动”+端口)
向我们展示您是如何使用routerI与第一个解决方案一起使用的路线设置应用程序路线的,它是有效的!但我在家前面有一个。可以删除吗?您不能删除哈希,因为它是哈希路由器的底层机制。这是一个您可以开始使用的解决方案,但是如果您想要删除哈希,您应该使用浏览器路由器和服务器路由(解决方案2)。