将 Web 应用嵌入到另一个 Electron 应用中时,应用崩溃,因为假定 window.ea 存在
作者: princinv创建于 2026年9月16日更新于 2026年9月16日
使用过的版本
19.0.1 网络/网络应用程序(PWA)
当前的行为
当超级生产力网络应用程序被嵌入到另一个Electron应用程序时,它无限期地留在加载屏幕上. 超级生产力从主机应用程序的用户代理中检测出Electron,并试图调用自己的Electron预装API,但窗口. ea在外电主机中并不存在. 无法读取未定义属性的启动中止( 读取 “ isGnomeWayland ” ) 。
• 预期行为
网络应用在嵌入另一个Electron应用程序时应当正常运行. 只有在超级生产力公司自己的预装桥实际可用时,才应使用电子专用的API.
- 重现步骤
- 在属于另一应用程序的 " electron <webview " 内开放https://app.super-productivity.com。 就我而言,这是Obsidian 与自定义框架插件。
- 网页视图用户代理包含 Electron/.
- 超级生产力仍在其装载屏幕上。
- DevTools报告无法从app.constants.ts读取未定义的属性(读取"isGnomeWayland").
- 窗口类型. ea 返回"未定义".
- 从 Webview 用户代理中去除 Electron/... 令牌, 并立即重新加载, 使 Super Plusion 能够正常加载 。
你能可靠地复制这个吗?
是的,我可以可靠地复制它。
控制台输出
贝壳 未抓取 TypeError: 无法读取未定义的属性( 读取 “ isGnomeWayland ”) at app.constants.ts:22:58 在块-PE6UJDCZ.js:1:835 主时: 16:1 在块-PE6UJDCZ.js:1:902 主要时间:593:4
环境测试:
导航器. user Agent 包含: 电能43.3.0
类型窗口。 ea QQ "未定义"
确认工作:
const ua = webview.get userAgent (.).取而代之(/\sElectron/[^\s]+/i,';). 网页视图. set 用户代理( ua) ; webview.reload (); (中文(简体) ).
在更改了用户代理后, Super Plusion 通常会加载.
页:1
- [ 文档/[wiki](https://GitHub.com/超生产力/超生产力/wiki)对于这个案例是不清楚或不正确的.
- [ 本案的文档/[wiki](https://GitHub.com/超生产力/超生产力/wiki)中应加注.内容来源: super-productivity/super-productivity