Skip to main content

Electron FAQ

  • ASAR

无边控窗口偶尔无法拖动#

如何检测运行在 electron#

window && window.process && window.process.type;
process.versions['electron'];
// Electron/navigator.userAgent;
// 如果 contextBridge.exposeInMainWorldglobalThis.electron;

BrowserView vs webview#

  • BrowserWindow - 用于替代 webview 标签
    • Electron 接口 - 非 DOM - 位置相对于父窗口,需要自行管理
    • 不开启额外渲染进程 - 主进程控制
  • webview - 不推荐使用
    • html tag - 好使用,好布局
    • 额外渲染进程 - out-of-process iframe - 所有通讯都是 IPC
    • 速度慢于 iframe

Chrome 扩展支持情况#

支持部分扩展

Failed to fetch extension, trying 4 more times#

最好启动时开代理,比如一般会加载 react devtool

  • fmkadmapgofadopljbjfkapdkoienihi - React Developer Tools
ls "$HOME/Library/Application Support/Electron/extensions/"

ExtensionLoadWarning: Warnings loading extension at#

electron 高版本 插件加载失败

安全相关问题#

Electron Helper (Renderer) CoreText note: Client requested name ".PingFangSC-Semibold", it will get Times-Roman rather than the intended font. All system UI font access should be through proper APIs such as CTFontCreateUIFontForLanguage() or +[NSFont systemFontOfSize:].#

不影响使用

Extension server error: Object not found: top"#

did-frame-finish-load 之后 打开 devtool

partition vs session#

electron Failed to load URL: with error: ERR_UNKNOWN_URL_SCHEME#

尝试不用 file 协议 或者自行处理

import { protocol } from "electron";

protocol.registerFileProtocol('file', (request, cb) => {  const url = request.url.replace('file:///', '');  const decodedUrl = decodeURIComponent(url);  try {    return cb(decodedUrl);  } catch (error) {    console.error('ERROR: registerLocalResourceProtocol: Could not get file path:', error);  }});