位置: 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 聚类算法

  • 金税四期怎么查账
  • 单位人民币卡账户可以支取现金吗
  • 用现金支付需要附哪些单据
  • 增值税季报还是月报
  • 承包费收入如何入账
  • 五险一金计提缴纳分录
  • 跨区域经营企业
  • 购进原材料发生非正常损失,账面成本10万元 该原材料
  • 非居民企业所得税计算公式
  • 企业平时计提的税费分录
  • 生产成本明细科目是原材料的名称吗
  • 特殊销售方式的计税依据
  • 生产企业电费要不要计提?
  • 拒绝税务检查的情形
  • 建筑业预缴增值税税率
  • 国税局公告2020年1号
  • 企业为员工提供住宿会计科目
  • 员工离职违约金怎么算
  • 赞助贫困学生的语句
  • 存货跌价准备在报表什么项目列示
  • 跨年度的费用发票怎么做账
  • 无偿使用固定资产如何缴税
  • 应税消费品用于连续生产应税消费品的
  • 如何在excel中添加选项内容
  • 虚拟机怎么安装iso镜像文件
  • 合伙企业收到分红需要交所得税吗
  • 报销租房费用开发票
  • 资产减值损失汇算清缴需要调增嘛?
  • Win11 Build 22000.160(KB5005189)预览版发布,更新了哪些内容
  • gain_trickler_3202.exe 进程查询 gain_trickler_3202进程是什么文件
  • 拔罐的好处和坏处除湿
  • 拍到国际空间站过境
  • qr code在线生成二维码
  • 新会计准则关于公司装修费
  • php解析配置文件
  • kali linux如何使用
  • 观景台俯视图
  • php网站能实现什么效果
  • 关停所有swap分区的命令
  • ajax跨域请求的原理是什么
  • vs命令参数
  • php 短信验证码
  • 发给客户的服装文案
  • 个人申请给公司账户转账
  • 停车费计税
  • 应收账款坏账准备怎么计算
  • 将织梦dedecms转换到wordpress
  • 准则规定的内容是
  • sql server如何设置远程连接
  • 计提工会经费如何划入工会专户
  • 集团公司收到的上级工作秘密比照国家
  • 利润表研发费用和管理费用
  • 暂估成本结转后需要冲回吗
  • 实物投资需要缴纳增值税吗
  • 按公允价值入账的有哪些
  • 购买的商品属于什么会计科目
  • 未分配利润属于总账科目吗
  • 怎么用公式计算结果填充单元格
  • linux 维护命令
  • centos6.0安装教程
  • wingate.exe - wingate是什么进程
  • proflwiz.exe - proflwiz是什么进程 有什么用
  • redhat系统界面
  • win7旗舰版升级win10
  • linux命令-s
  • perl怎么读取文件
  • unity通过脚本控制骨骼节点让模型动起来
  • vue路由跳转的钩子函数什么时候会用到
  • 文件夹权限命令
  • node.js ajax
  • 基于javascript的毕业设计
  • android:theme="@style/apptheme"
  • 开票系统开不了票
  • 重庆税筹公司
  • 四川省国家税务局官网
  • 车船税的缴纳证明是什么意思?
  • 耕地占用税 湖北
  • 北京朝阳区电话区号是多少?
  • 江苏省国家税务局总局官网
  • 企业所得税零申报
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设