electron知识整理和问题汇总

知识整理

1.electron进程间通讯

快速通道 electron进程间通讯

2.关于electron-vue里的app.asar

快速通道 关于electron-vue里的app.asar

3.获取版本号等信息

remote.app.getVersion(); //加载应用程序的版本号。 如果应用程序的 package. json 文件中找不到版本号, 则返回当前包或者可执行文件的版本。
app.getName(); //当前应用程序的名称,即为该应用程序 package.json 文件的 name 字段。app.getAppPath(); //当前应用程序目录,如D:\product\distapp.getPath(name); // 您可以通过名称请求以下路径(https://www.electronjs.org/zh/docs/latest/api/app#appgetpathname)

4.复制内容

const { c } = window.require("electron");
clipboard.writeText("aaaa");

更多详情查看:clipboard的用法

扩展

//js用法:
let Copytext = document.getElementById("copytext");
Copytext.value = "111111";
Copytext.select();
document.execCommand("copy");
// alert('复制成功!')
this.$message({message: "复制成功!",type: "success",
});

5.electron软件奔溃捕获

// 获取奔溃堆栈文件存放路径
// electron 低版本 path.join(app.getPath("temp"), app.getName() + " Crashes");
// electron 高版本 app.getPath("crashDumps");mainWin.webContents.on("crashed", async (e, killed) => {let result = await dialog.showMessageBox({type: "error",title: "应用程序崩溃",message: "当前程序发生异常,是否要重新加载应用程序?",buttons: ["是", "否"],});if (result.response == 0) {mainWin.webContents.reload();} else {app.quit();console.log("系统奔溃,可在此进行日志收集,将奔溃原因写入日志文件");}
});// 或者
app.on("render-process-gone", async (e, w, d) => {const _path = path.join(app.getPath("crashDumps"), "crashederror.log");if (!fs.existsSync(_path)) {fs.writeFileSync(_path,`[${new Date()}] 系统出错日志·clean-exit - 以零为退出代码退出的进程·abnormal-exit - 以非零退出代码退出的进程·killed - 进程发送一个SIGTERM,否则是被外部杀死的。·crashed - 进程崩溃·oom - 进程内存不足·launch-failed - 进程从未成功启动·integrity-failure - 窗口代码完整性检查失败\n`,{ encoding: "utf-8" });}if (d.reason == "crashed" || d.reason == "oom") {// 进程崩溃 / 进程内存不足let result = await dialog.showMessageBox({type: "error",title: "应用程序崩溃",message: "当前程序发生异常,是否要重新加载应用程序?",buttons: ["是", "否"],});const msg = `[${new Date()}] 渲染进程被杀死-${d.reason}`;if (result.response == 0) {fs.appendFileSync(_path, `${msg}重新加载软件\n`);mainWin.webContents.reload();} else {fs.appendFileSync(_path, `${msg}\n`);app.quit();}} else {fs.appendFileSync(_path, `[${new Date()}] 渲染进程被杀死${d.reason}\n`);}
});
  • reason string - 渲染进程消失的原因。 可选值:

    • clean-exit - 以零为退出代码退出的进程
    • abnormal-exit - 以非零退出代码退出的进程
    • killed - 进程发送一个SIGTERM,否则是被外部杀死的。
    • crashed - 进程崩溃
    • oom - 进程内存不足
    • launch-failed - 进程从未成功启动
    • integrity-failure - 窗口代码完整性检查失败
  • exitCode Integer - 进程的退出代码,除非在 reasonlaunch-failed 的情况下, exitCode 将是一个平台特定的启动失败错误代码。

const {app,BrowserWindow,crashReporter,ipcMain,systemPreferences,
} = require("electron");
const path = require("path");// 开启crash捕获 官方建议写在app.on('ready')前
crashReporter.start({productName: "Your-Application-Name",companyName: "Your-Company-Name",submitURL: "https://www.xxx.com", // 上传到服务器的地址uploadToServer: false, // 不上传服务器ignoreSystemCrashHandler: false, // 不忽略系统自带的奔溃处理,为 true 时表示忽略,奔溃时不会生成奔溃堆栈文件
});// 简写
crashReporter.start({ uploadToServer: false });

问题汇总

1.electron打包时报错

使用electron打包时候报ExecError: D:\zlwl\el\win-dahui\node_modules\app-builder-bin\win\x64\app-builder.exe exited with code ERR_ELECTRON_BUILDER_CANNOT_EXECUTE和cannot resolve https://npm.taobao.org/mirrors/electron/13.0.0/electron-v13.0.0-win32-x64.zip: status code 404的错误,如下图:

1.首先处理ExecError: D:\zlwl\el\win-dahui\node_modules\app-builder-bin\win\x64\app-builder.exe exited with code ERR_ELECTRON_BUILDER_CANNOT_EXECUTE的问题
在项目中的.npmrc中加上 ELECTRON_BUILDER_BINARIES_MIRROR=https://mirrors.huaweicloud.com/electron-builder-binaries/ 如果没有这个文件新建一个即可;

2.然后就是cannot resolve https://npm.taobao.org/mirrors/electron/13.0.0/electron-v13.0.0-win32-x64.zip: status code 404的错误
这个错误其实就是这个地址不知道为啥搞错了应该是 https://npm.taobao.org/mirrors/electron/v13.0.0/electron-v13.0.0-win32-x64.zip 这个地址,手动访问下载后放到C:\Users\用户名\AppData\Local\electron\Cache\下面;如下图

然后再打包这两个问题就没有了

2.electron如何解决白屏问题

快速通道 electron如何解决白屏问题

3.导入electron.remote后,remote为undefine

快速通道 导入electron.remote后,remote为undefined

4.electron 打包“ERR_ELECTRON_BUILDER_CANNOT_EXECUTE”

electron 打包遇到的问题, 因为网络的问题,一下文件无法下载。

文件下载地址 :https://npm.taobao.org/mirrors/electron-builder-binaries/

1.下载 与当前elecron本版一致的 electron-v13.2.3-win32-x64 然后放到 参考路径 : C:\Users\Admin/AppData\Local\electron\Cache

2 下载 对应的 winCodeSign 解压后 放到 C:\User\Admin/AppData\Local\electron-builder\Cache 没有 winCodeSign 文件夹 自己新建

3.下载对应的 nsis 和 对应的 nsis-resources 放到 C:\User\Admin/AppData\Local\electron-builder\Cache/nsis 下面

5.errorOut=Fatal error: Unable to commit changes

1.关闭杀毒软件尝试

2.关闭软件,重新进入,再尝试

3.若是还是不行,就多试几次

目前对我来说,写完代码,去打包,基本上都是成功的,失败了关闭vscode再build也会成功,但是连续打包,就必然失败,反正一脸懵逼

地址

https://registry.npmmirror.com/binary.html?path=electron/
https://mirrors.huaweicloud.com/electron-builder-binaries/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/461074.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ROS(快速初步入门)

目录 一、节点与节点管理器 二、通信方式 三、参数 四、文件系统 五、ROS命令行工具 六、创建工作空间与功能包 1)工作空间 2)创建功能包 七、发布者Publisher的代码实现 八、订阅者Subscriber的编程实现 九、自定义话题并使用 十、Client客户…

leetcode-62-不同路径

题解: 1、设dp[i][j]代表到达(i,j)点最多的路径;题目要求机器人每次只能向右或向下走一步,所以到达(i,j)点的最多路径为到达(i-1,j)的最多路径与到达(i,j-1)的最多路径之和。即dp[i][j]dp[i-1][j]dp[i][j-1]。 2、初始化一个M*N的矩阵dp,将…

【问题解决】pnpm : 无法将“pnpm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

今天配置完poetry环境变量之后pnpm不能用了 具体报错 pnpm : 无法将“pnpm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。 所在位置 行:1 字符: 1pnpm run dev~~~~ Ca…

【设计模式】如何用C++实现依赖倒置

【设计模式】如何用C实现依赖倒置 一、什么是依赖倒置? 依赖倒置原则(Dependency Inversion Principle,DIP)是SOLID面向对象设计原则中的一项。它的核心思想是: 高层模块不应该依赖于低层模块,两者都应该…

达梦数据迁移工具DTS使用实践

1、环境描述 2、DTS概述 1.支持视图、存储过程/函数、包、类、同义词、触发器等对象迁移; 2.支持数据类型的自动映射,编码转换; 3.支持根据条件自定义迁移部分数据; 4.向导式迁移步骤,上手简单; 5.支持 we…

瑞格智慧心理服务平台 NPreenSMSList.asmx sql注入漏洞复现

0x01 产品描述: ‌ 瑞格智慧心理服务平台‌是一个集心理测评、心理咨询、心理危机干预、心理放松训练等功能于一体的综合性心理健康服务平台。该平台由北京瑞格心灵科技有限公司开发,旨在为用户提供全方位的心理健康服务。0x02 漏洞描述:…

【经典论文阅读11】ESMM模型——基于贝叶斯公式的CVR预估

传统的CVR模型(也就是直接对conversion rate建模的模型)在实际应用中面临两个问题(样本选择偏差与数据稀疏性问题)。为了解决这两个问题,本文提出ESMM模型。该模型巧妙地利用用户行为序列去建模这个问题,从…

OpenCV基础01

目录 一、环境安装 二、显示窗口 三、创建图片 四、图片保存 五、图像裁剪 六、调整图片大小 七、图像绘制 1、绘制圆形 2、绘制矩形 3、绘制文本 4、绘制直线 5、中文文本 八、控制鼠标 九、鼠标事件 十、视频处理 OpenCV作为C和C语言的源代码文件,…

git:将多个提交合并为一个

如何将第一至第五次提交合并为一个? 1. 使用 git log -n 命令查看spring boot admin的commit-id,本例n6,命令如下: PS E:\liguogang\spring-cloud> git log -62. 使用 git reset --soft commit-id 命令将前五次提交重置到工作…

Leetcode 二叉树中的最大路径和

算法思想 这道题要求在一棵二叉树中找到路径和最大的路径。路径可以从树中任意一个节点开始,到任意一个节点结束,但路径上的节点必须是连续的。 算法使用递归的方式来遍历树中的每个节点,并在遍历过程中计算包含当前节点的最大路径和。具体…

Python 变量在函数中的作用域

什么是局部变量? 作用范围在函数内部,在函数外部无法使用 什么是全局变量? 在函数内部和外部均可使用 如何将函数内定义的变量声明为全局变量? 使用global关键字, global变量 练习: 演示局部变量 #…

【Android】Kotlin教程(4)

文章目录 1.field2.计算属性3.主构造函数4.次构造函数5.默认参数6.初始化块7.初始化顺序7.延迟初始化lateinit8.惰性初始化 1.field field 关键字通常与属性的自定义 getter 和 setter 一起使用。当你需要为一个属性提供自定义的行为时,可以使用 field 来访问或设置…

SSH登录介绍

说明:一般登录服务器,我们可以用远程连接工具,如XShell、Windterm等,或者通过公司搭建的JumpServer(跳板机、堡垒机)来连接。前者是点对点登录,输入主机、端口,通过SSH协议登录&…

unity中预制体的移动-旋转-放缩

unity中预制体的移动-旋转-放缩 左上侧竖栏图标介绍Tools(手形工具)Move Tool(移动工具,单位米)Rotate Tool(旋转工具,单位角度)Scale Tool(缩放工具,单位倍数)Rect Tool(矩形工具)Transform Tool(变换工具)图标快捷键对照表工具使用的小技巧…

HarmonyOS开发 - 本地持久化之实现LocalStorage实例

用户首选项为应用提供Key-Value键值型的数据处理能力,支持应用持久化轻量级数据,并对其修改和查询。数据存储形式为键值对,键的类型为字符串型,值的存储数据类型包括数字型、字符型、布尔型以及这3种类型的数组类型。 说明&#x…

java程序打包为一个exe程序

ok,最近学到了一个有意思的东西 那就是如何将自己写好的java程序打包成一个exe程序,发给别人,然后运行。 那么开始之前,请先安装整个工具: exe4j:https://www.ej-technologies.com/exe4j/download&#…

高并发设计模式之ForkJoin模式

分而治之是一种思想,所谓分而治之就是把一个复杂的算法问题按一定的分解方法分为规模较小的若干部分,然后逐个解决,分别找出各部分的解,最后把各部分的解在整合成整个问题的解.ForkJoin模式就是分而治之思想的另一种应用. ForkJoin模式的原理 ForkJoin模式先把一个大任务分解…

AMD XILINX 20nm器件价格上调25%

随着市场回暖,台积电也在调整价格策略,近期台积电上调了20nm的出厂价格。 据相关消息显示,AMD为了保障持续的供货和服务,也计划将20nm器件的价格统一上调25%,预计将于11月发布正式的涨价通知,并于2025年Q1开…

EfficientNet-B6模型实现ISIC皮肤镜图像数据集分类

项目源码获取方式见文章末尾! 回复暗号:13,免费获取600多个深度学习项目资料,快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【基于opencv答题卡识别判卷】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【G…

为何我们要将测试左移?回到过去的美好时光

以下为作者观点: 为何我们将测试左移?在传统的开发周期中,测试通常在功能完成后甚至在开发阶段结束时进行。左移测试通过从开发过程开始到整个开发过程整合测试活动来挑战这一点。 让我们首先讨论一下为什么我们选择“左移”,因…