动态

详情 返回 返回

記錄react+electron開發單頁應用SPA遇到的路由問題 - 动态 详情

遇到的問題

在electron-vite提供的開發服務器中,electron能正常顯示頁面中的路由並能正常跳轉.
而在build打包後,雙擊運行electron應用,路由失效,顯示空白頁面

排查BUG

閲讀了腳手架為我生成的主函數代碼:

  // HMR for renderer base on electron-vite cli.
  // Load the remote URL for development or the local html file for production.
  if (is.dev && process.env['ELECTRON_RENDERER_URL']) {
    mainWindow.loadURL(process.env['ELECTRON_RENDERER_URL'])
  } else {
    mainWindow.loadFile(join(__dirname, '../renderer/index.html'))
  }

可以發現,開發模式下是通過本地鏈接直接顯示vite開發服務器的頁面
而非開發環境則是直接加載本地html頁面

接下來我們再看我的react路由部分代碼:

<BrowserRouter>
    <React.StrictMode>
        <App />
    </React.StrictMode>
</BrowserRouter>

可以發現我們使用了BrowserRouter模式的路由

推測原因

我認為在electron中,只是使用了瀏覽器來直接顯示html頁面,而沒有正確處理路由BrowserRouter模式

驗證

使用vite build打包html頁面,不用electron顯示,而是在nginx中測試
在nginx中發現能正常路由

解決方法

改用HashRouter模式路由,完美解決。

<HashRouter>
    <React.StrictMode>
        <App />
    </React.StrictMode>
</HashRouter>

Add a new 评论

Some HTML is okay.