electron 开发经验之谈系列-常见问题

本文最后更新于:2021年2月23日 下午

突然之间 electron 就不能启动了

删除 node_modules 重新 yarn 看看?

打包之后的程序页面空白

实际上是 electron 无法正常加载页面,原因很多

  1. 路径问题,解压 asar 查看实际路径(main.jsloadUrl 的路径是否正确)
  2. react router 仅支持 hash 模式
  3. 在从文件系统中读取 html 文件时不能使用 # 指定路由,参考: https://stackoverflow.com/questions/55715384s

asar 文件一般在 _win-unpacked/:/app_,参考: https://github.com/electron/asar

electron 程序命令行输出中文乱码

在运行命令前首先运行 chcp 65001 修改活动代码页编号,参考:Using UTF-8 Encoding (CHCP 65001) in Command Prompt / Windows Powershell (Windows 10)

如何不打包成压缩格式 asar

配置 electron-builder "asar": false

second-instance 事件监听无效

必须使用 app.requestSingleInstanceLock() 保持应用程序单例,才能正常监听到该事件。

示例代码

1
2
3
4
5
6
7
8
const gotTheLock = app.requestSingleInstanceLock();
if (!gotTheLock) {
app.quit();
} else {
app.on("second-instance", (event, commandLine, workingDirectory) => {
console.log("second-instance");
});
}

参考: https://www.electronjs.org/docs/api/app#apprequestsingleinstancelock

安装浏览器扩展报错

提示安装失败

1
2
3
(node:23488) ExtensionLoadWarning: Warnings loading extension at C:\Users\rxliuli\AppData\Roaming\Electron\extensions\fmkadmapgofadopljbjfkapdkoienihi: Unrecognized manifest key 'browser_action'. Unre
cognized manifest key 'minimum_chrome_version'. Unrecognized manifest key 'update_url'. Cannot load extension with file or directory name _metadata. Filenames starting with "_" are reserved for use by
the system.

其实答案是:扩展必须在 app.ready 之后,创建 BrowserWindow 窗口之前安装。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!