electron + react +react-router-dom 打包桌面应用白屏

hash 是空字符串,说明你访问的是:

复制代码
file:///D:/web3/Harbour/resources/app.asar/build/index.html

没有带 #/ ,React Router 的 <Route path="/"> 也就匹配不到,所以整个 <main> 里什么都没有。


✅ 立即解决

1. 手动在地址栏加上哈希
复制代码
file:///D:/web3/Harbour/resources/app.asar/build/index.html#/

然后回车,看页面是否渲染出 Home 组件内容。

2. 或者把路由改成"兜底"匹配

App.tsx 里加一条通配路由,确保任何路径都至少渲染点什么:

tsx 复制代码
<Routes>
  <Route path="*" element={<Home />} />   {/* 兜底 */}
  <Route path="/" element={<Home />} />
  <Route path="/user" element={<User />} />
  ...
</Routes>

这样即使 hash 为空也能渲染 Home。


✅ 最终建议(Electron 打包后的正确姿势)

Electron 启动时,主动把窗口导航到带哈希的路径

js 复制代码
// main.js / main.ts
mainWindow.loadURL(
  url.format({
    pathname: path.join(__dirname, 'build/index.html'),
    protocol: 'file:',
    slashes: true,
    hash: '/',            // 关键:自动带 #
  })
);

或者使用 win.loadFile 的等价写法:

js 复制代码
mainWindow.loadFile('build/index.html', { hash: '/' });

✅ 总结

现象 原因 解决
hash 为空 没有 #/ → 路由匹配失败 1. 地址栏手动加 #/ 2. 路由加 path="*" 3. 主进程加载时主动带 hash: '/'

先试第 1 步手动加 #/,确认页面能出来,再按第 3 步修改主进程,让最终打包版自动跳到正确路径。

相关推荐
国服第二切图仔11 分钟前
Electron for 鸿蒙pc项目实战之tab标签页组件
javascript·electron·harmonyos·鸿蒙pc
G***E31630 分钟前
前端在移动端中的React Native Web
前端·react native·react.js
Neptune143 分钟前
深入浅出:理解js的‘万物皆对象’与原型链
前端·javascript
阿迷不想上班43 分钟前
windows自动任务定期执行
javascript
盗德1 小时前
最全音频处理WaveSurfer.js配置文档
前端·javascript
Heo1 小时前
关于Gulp,你学这些就够了
前端·javascript·面试
祈澈菇凉1 小时前
Next.js 零基础开发博客后台管理系统教程(八):提升用户体验 - 表单状态、加载与基础验证
前端·javascript·ux
有意义1 小时前
从日常使用到代码实现:B 站签名编辑的 OOP 封装思路与实践
javascript·代码规范·ecmascript 6
nvd111 小时前
SSE 流式输出与 Markdown 渲染实现详解
javascript·python