react-router 刷新遇到報錯,頁面顯示空白?

問題描述

第一次進入頁面,頁面點擊都是正常的,當手動在路由上輸入鏈接或者刷新,頁面就報錯顯示白屏。

解決方案

方案 1

BrowserRouter 改爲 HashRouter

方案 2

修改 webpack.config.js 配置文件

module.exports = {
    ...
    devServer: {
        historyApiFallbacktrue
    }
}

注:在 devServer 中必須設置 historyApiFallback: true

但是引入之後historyApiFallback: true,發現二級頁面還是會報錯

繼續修改webpack.config.js 配置文件

module.exports = {
    ...
    output: {
        path: path.resolve(__dirname, 'build'),
        publicPath'/',
    },
}

原因分析

🌰:您想給媽媽發送鏈接https://tictactyler.com/play,因爲您想和她一起玩。當她在瀏覽器中輸入該URL並按下Enter鍵時,會發生什麼?在這一點上,她沒有JavaScript,沒有React,也沒有React Router。瀏覽器向/play發出GET請求,由於您依靠React Router來處理所有路由邏輯(但她還沒有React Router),因此該應用程序崩潰了,並且顯示Cannot GET / play。

現在最大的問題是,我們如何解決這個問題? 問題的根源在於,您完全依賴客戶端路由,而沒有設置任何邏輯來處理服務器端路由。解決這個問題有兩個主要思路。首先,設置客戶端和服務器端路由。第二,將所有服務器請求重定向到/index.html,這將下載所有JS資源並允許React Router從那裏獲取它。

參考鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章