Reactjs GitHub页面主页子域抛出404

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

我将React应用程序部署到Github页面作为主页

问题是我无法直接访问/home或任何子域,也无法刷新其中的页面。它抛出404。但应用程序内部的重定向是有效的,如果您在登录页上等待动画完成,您可以访问/主页

我检查过了,我的其他存储库没有在/home下注册

有人能告诉我为什么吗?我应该如何解决这个问题

更新: React路由器配置为:

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)。