位置: IT常识 - 正文

Electron打包的桌面应用程序,运行中程序黑屏、白屏等渲染进程崩溃问题解决(electron 打包)

编辑:rootadmin
Electron打包的桌面应用程序,运行中程序黑屏、白屏等渲染进程崩溃问题解决 1. 问题描述

推荐整理分享Electron打包的桌面应用程序,运行中程序黑屏、白屏等渲染进程崩溃问题解决(electron 打包),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:electron打包工具,electron打包exe,electron打包deb,electron打包exe,electron打包exe,electron打包成apk,electron打包deb,electron打包exe,内容如对您有帮助,希望把文章链接给更多的朋友!

使用Electron打包web项目为桌面应用程序,由于运行环境的硬件条件或其他一些原因,导致程序运行过程中黑屏、白屏、崩溃。

2. 解决过程2.1 依赖版本:electron:v8.2.1electron-log: v4.1.1electron-packager: v14.2.12.2 运行环境Electron打包的桌面应用程序,运行中程序黑屏、白屏等渲染进程崩溃问题解决(electron 打包)

win7 x86

2.3 分析过程2.3.1 排除

程序本身运行不会“白屏”,但运行长时间后,会偶尔出现“白屏”情况,重启程序,可以正常显示。故而排除开发的程序本身存在严重问题的可能,转而从白屏的现象本身寻找思路。

2.3.2 寻找规律观察发现:每当程序崩溃时,任务管理器中,此程序的某个进程出了状况(时间久了,不记得具体情况了,当时没有截图)手动复现:任务管理器中,win10关掉electron程序进程内存占用最大的一个(win7的话关掉第二大的),可以复现白屏的效果。进一步发现,手动复现的过程中,实际关掉的是此程序的“渲染进程”。2.3.2 寻找解决方法查找到官方文档中app的事件renderer-process-crashed,当渲染进程webContents崩溃或关闭时触发。鉴于打包后的程序,在崩溃时,无法直接从控制台中拿到log,引入electron-log包(此处不展开),将输出日志记录到本地文件中,在Electron的“入口文件”中,添加下面代码:// 测试一下是否可以捕捉到崩溃的状态app.on("renderer-process-crashed", function (event, webContents, details) { console.error("renderer-process-crashed catched.");});使用上述“手动复现”的方式模拟“白屏”事件发生,查找“日志文件”,查看main.log中输出的内容,发现确实捕捉到了。日志路径:C:\Users\用户名\AppData\Roaming\程序名\logsmain.log:主进程的日志, 入口文件中输出的日志会在这里。renderer.log: 渲染进程的日志,web项目中输出的日志会在这里。既然已经捕捉到了,那么只要在此处对崩溃进行处理就可以了app.on("renderer-process-crashed", function (event, webContents, details) { // 输出一下捕捉到的reason,实际可以根据不同的“原因”进行具体处理 console.error("renderer-process-crashed, reason => ", JSON.stringify(details)); // 基于我在开发的程序本身的设定,此处重启应用就可以了 app.relaunch({args: process.argv.slice(1).concat(['--relaunch'])}); // 尝试关闭所有窗口 app.quit();});结合运维人员的反馈,“白屏”问题没再出现过了。3. 针对上文中内容的一些说明3.1 renderer-process-crashed

返回:

event {Event}webContents {WebContents}killed {boolean} 当渲染器进程webContents崩溃或关闭(杀死)时触发。 已废弃:在新的electron版本中,已经被render-process-gone替代

参考Electron官方API文档 https://www.electronjs.org/zh/docs/latest/api/app#%E4%BA%8B%E4%BB%B6-render-process-gone

3.2 electron-log

参考electron-log的github https://github.com/megahertz/electron-log/

本文链接地址:https://www.jiuchutong.com/zhishi/287998.html 转载请保留说明!

上一篇:vue中的get方法\post方法如何实现传递数组参数(vue get方法)

下一篇:机器学习-10 聚类算法

  • 税前扣除的项目包括
  • 融资租赁税率是什么意思
  • 金税四期怎么监控银行流水
  • 办公室租金发票可以扺军品企业增值税吗
  • 累计纳税工资是什么意思
  • 生产部门领用低值易耗品,实际成本
  • 雇主责任险为什么不能立即生效
  • 研发加计扣除的标准
  • 纸箱报废处理怎么做账
  • 资本公积转实收资本会计科目
  • 园林绿化工程税点
  • 代开专用发票的数量单价单位怎么写?
  • 增值税普通纳税人税率
  • 汇算清缴截止
  • 销售百分比法计算步骤
  • 资产负债表中资产总计和负债所有者权益不平等
  • 期初建账实验步骤
  • 分红未及时扣缴税款要缴滞纳金吗?
  • 分公司注销时有未分配利润需要交税吗
  • 附加税申报表
  • 预收购货款的会计分录
  • 研发费收入属于什么收入
  • 如何能屏蔽自动扣费服务
  • 公司支付货款怎么做账
  • 民间非营利组织会计账务处理
  • 金融工具减值会影响什么
  • 商品先入库后得发票如何做账
  • 开办费对应的现金流量项目
  • 购进设备抵扣税额
  • 酒吧送酒的人叫什么
  • 民营医院所得税税率
  • 从零开始作者
  • 小程序官方组件展示
  • php zmq
  • 应交税费会计分录怎么做明细科目
  • 递延所得税资产和所得税费用的关系
  • uni-simple-router 跳转无效
  • 织梦cms怎么样
  • pycharm pypy
  • MongoDB的Master-Slave主从模式配置及主从复制要点解析
  • 增值税退税流程怎么操作
  • 营业外收入包括其他业务收入吗
  • 垃圾处理费申报怎么填
  • 食堂费用没有发票
  • 合并报表中的抵消分录是什么意思?
  • 企业之间利息收入开票吗
  • 待认证进项税额月末怎么处理
  • 公司法人转账到公司账户
  • 所得税汇算清缴前取得跨年发票
  • 网络管理费用
  • 月末结转各项费用支出479000
  • 企业会计账簿设计的原则
  • SQL中实现SPLIT函数几种方法总结(必看篇)
  • Mac下mysql 5.7.17 安装配置方法图文教程
  • windows10pc游戏无法全屏
  • windowsxp休眠设置
  • mac电脑怎么安装ie浏览器
  • linux进程的概念
  • mac的虚拟机
  • winpe安装系统教程
  • mac怎么安装字体到ai
  • 硬盘读盘慢修复
  • macbookpro安装双系统win7系统
  • win10键盘大小写不能切换了
  • unity如何合并物体
  • 表单javascript
  • node实战
  • python制作windows安装程序
  • javascript数学函数
  • 如何使用form表单
  • javascript随机生成数字
  • jquery封装的函数
  • unityui
  • 发票 报销期限
  • 支付宝中油好客e站怎么开发票
  • 豪车超过多少钱要多加税
  • 国家税务总局发票查验平台网络异常
  • 营业税发票丢失能否开增值税普票
  • 昱铭这个公司名字怎么样
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设