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

  • 个人所得税申报操作流程2023
  • 办公用品普通发票的会计分录
  • 工程会计和工业会计进销项区别是什么
  • 自然人税收管理系统扣缴客户端
  • 税控服务费列入管理费用什么费用?
  • 应收账款和应付账款对冲会计分录
  • 商超陈列费
  • 分公司办理税务需要什么东西
  • 应交增值税出口退税贷方余额
  • 学校付学生的现金奖励入什么科目
  • 发票逾期未认证个人要承担责任吗
  • 技术服务合同增值税税率3%
  • 网上勾选认证发票步骤
  • 营改增后受托代销手续费税率是多少?
  • 投资性房地产属于流动资产吗
  • 费用报销单应怎样填写
  • 工会经费的计税依据包括单位社保吗
  • 收到加盟费怎么入账
  • win10怎么设置win7开始菜单
  • 工业企业会计核算的特点
  • lsass.exe是什么进程
  • php对二维数组进行排序
  • 上市公司分红派股
  • 一次性取得的租金收入
  • 存货的核算方法一次可以选用几个
  • tensorflow2安装
  • 个人独资企业的特点
  • 哪些农产品按照鲜品统计
  • phpcms怎么用
  • 流动比率越高越好嘛
  • 季报弥补亏损,财报怎么填
  • 离职补偿金可以拖欠么
  • python elasticsearch timeout
  • 被投资企业清算,长期股权投资处理
  • 拆迁补偿收入是否缴纳所得税
  • 进项税需要转出的分录
  • 进项税额的作用
  • 企业营业税怎么征收
  • 资产负债表应付职工薪酬是负数是什么原因
  • 汇算清缴思路
  • 已经经营中的企业有哪些
  • 单位或个体经营者
  • 向投资者支付的股息
  • 企业转移地点剩余房产
  • 应收账款收不回来怎么处理分录
  • 汇算清缴补交所得税的分录
  • 所得税审核一般需要多久
  • 预付账款要设明细科目吗
  • 医院的自助缴费机怎么开具发票
  • 生产企业代理出口退税
  • 销售毛利率越高越好吗
  • 余额调节表怎么填写例题
  • 工资的计算方法有几种
  • sqlserver 创建索引与使用
  • win10执行数据保护如何开启
  • ubuntu server教程
  • vmware怎么放大虚拟机
  • 进去界面黑屏
  • Win10如何打开软键盘
  • win7 win10 win8
  • win10 Mobile 10586.36预览版更新了哪些内容?
  • win7系统迁移到另一磁盘
  • excel f9刷新
  • 经纬科技it6000
  • jquery动态生成div
  • JavaScript jQuery 中定义数组与操作及jquery数组操作
  • 批处理改ipv4地址
  • three.js 教程
  • python字典有什么用
  • js实现@功能
  • python递归写法
  • HorizontalListView
  • javascript代码生成器
  • 公司信用等级b级是什么意思
  • 个人所得税完税证明网上打印
  • 大排量车船税怎么减免
  • 政府无偿划拨土地涉及的税费
  • 一般纳税人获得自产自销免税发票怎么处理
  • 中国税务报多少钱
  • 国税局发票查询平台发票查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设