將react-app部署到github.io返回404

前言

我們知道在GitHub中,我們可以將我們的html代碼托管到GitHub的倉庫里,然后訪問https://用戶名.github.io就可以看到我們部署的前端頁面。這對于不想花錢租服務(wù)器,又想搭建自己個人網(wǎng)站的程序員來說,可以算是一個很大的福音。我們只需要登錄GitHub賬號,然后新建一個用戶名.github.io的倉庫,接下來再把自己的代碼git到這個倉庫,我們在GitHub上的個人網(wǎng)站就能通過htpps://用戶名.github.io展示了。具體的教程可以網(wǎng)上搜索,這里就不具體討論了??梢詤⒖歼@篇博客如何快速搭建自己的github.io博客

問題描述

現(xiàn)在前端頁面,多數(shù)是用react和vue等實現(xiàn)。這里主要講解一下我在使用react,并且想將打包后的APP部署到github.io時遇到的問題。我遇到的問題是,當(dāng)我想訪問react-app下的除\color{green}{"/"}路徑下的其它頁面,結(jié)果都返回404。接下來,我們就來解決這個問題。

尋找原因

從上面的描述,我們知道問題肯定出在了react的路由上,看一下我的部分路由代碼

import {BrowserRouter as Router,Route,Switch} from "react-router-dom";

export default ()=>(
    <Router>
        <Switch>
            <Route path='/' exact component={Home}/>
            <Route path='/home' component={Home}/>
            <Route path='/blog' component={Blog}/>
            <Route path='/comment' component={Comment}/>
            <Route path='/app' component={App}/>
            <Route path='/others' component={Others}/>
        </Switch>
    </Router>
)

從react 4.0開始,react中的Router被取代,它分成了BrowserRouterHashRouter。而我這里使用的是BrowserRouter。我們知道react的頁面都是被渲染出來之后再顯示出來,實際上這個文件夾或文件可能根本不存在。比如看上面的代碼,blog這個目錄本身是不存在的,要通過訪問index.html然后調(diào)用react-app里的各種函數(shù)將它渲染出來,再展示到大家面前,具體過程是react內(nèi)部自身實現(xiàn)的。但當(dāng)我們把代碼放到github.io上之后,GitHub服務(wù)器在react之前就把/blog拿去解析了,導(dǎo)致GitHub服務(wù)器自以為有這個目錄存在,于是就去尋找/blog目錄下的index.html。但我們知道,我們項目中實際上不存在blog這個目錄。所以當(dāng)GitHub服務(wù)器找不到這個目錄以及下面的文件后,就返回404了。

解決方法

現(xiàn)在我們知道問題出在哪里了,GitHub把/blog拿去解析,導(dǎo)致解析出錯。所以我們要做的是不讓GitHub去解析/blog,而是讓react-app自己去解析,也就是把/blog交給react根目錄下的index.html。怎么做呢,很簡單,把上面代碼中的BrowserRouter改為HashRouter就可以了

import {HashRouter as Router,Route,Switch} from "react-router-dom";

HashRouter和BrowserRouter最明顯的區(qū)別在于,它在/blog前面加了個#號,變成了#/blog。這就讓GitHub服務(wù)器把#后面的路徑當(dāng)作參數(shù)傳給了react-app,這樣react-app就能正常處理路徑問題了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 早上六點一過,兒子發(fā)來一條消息,他到機(jī)場了,我立刻從睡眼朦朧中徹底驚醒過來。今天是兒子回來的日子!趕緊詢問了有入關(guān)...
    木央的春天閱讀 343評論 2 5
  • 文/柳絮 《仁醫(yī)》,最近很火的醫(yī)療美劇,開播七集,點播率已超很多當(dāng)紅劇,媲美當(dāng)年大熱的《豪斯醫(yī)生》。 主角肖恩(...
    柳絮紛飛啊閱讀 1,080評論 7 20
  • 很多時候我們會對孩子們表現(xiàn)出來各種蠻不講理、語出驚人的行為感到不解,其實那是孩子進(jìn)入了“敏感期”的表現(xiàn)。著名兒童教...
    向陽而生吧閱讀 1,324評論 0 0
  • 公司對面有個小商場,下班路過的時候覺得現(xiàn)在回家還蠻早的,可以進(jìn)去逛逛,目標(biāo)明確,直奔買衣服,看著琳瑯滿目的衣櫥,好...
    季沐爾閱讀 2,019評論 1 1
  • logging 簡介: logging 函數(shù)根據(jù)它們用來跟蹤的事件的級別或嚴(yán)重程度來命名: logging 模塊提...
    粟米一粒閱讀 356評論 0 0

友情鏈接更多精彩內(nèi)容