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

这篇具有很好参考价值的文章主要介绍了Electron打包的桌面应用程序,运行中程序黑屏、白屏等渲染进程崩溃问题解决。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 问题描述

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

2. 解决过程

2.1 依赖版本:

  • electronv8.2.1
  • electron-log: v4.1.1
  • electron-packager: v14.2.1

2.2 运行环境

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\程序名\logs
    • main.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-loggithub https://github.com/megahertz/electron-log/文章来源地址https://www.toymoban.com/news/detail-467341.html

到了这里,关于Electron打包的桌面应用程序,运行中程序黑屏、白屏等渲染进程崩溃问题解决的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用Electron打包vue文件变成exe应用程序

    克隆下载Electron: 链接: electron-quick-start 1.下载之后安装Electron依赖 npm安装electron总失败使用下面的安装方式 2.安装打包运行 代码如下(示例): 代码如下(示例): 代码如下(示例): 打包后得路径修改成为./,避免Electron打包exe后显示空白 修改生产环境配置,配置为后端

    2024年01月24日
    浏览(48)
  • 飞腾架构麒麟V10桌面系统Qt应用程序打包

    前言 本文记录了在飞腾架构麒麟V10桌面系统中打包Qt应用程序及部署的一些注意事项。打包工具使用的是linuxdeployqt,在飞腾架构架构下没有现成的工具安装包,需要自行编译安装。 1. linuxdeployqt 首先下载linuxqtdeploy下载地址https://github.com/probonopd/linuxdeployqt 下载之后解压目录如

    2024年02月11日
    浏览(93)
  • 【Docker】了解Docker Desktop桌面应用程序,TA是如何管理和运行Docker容器(3)

    欢迎来到《小5讲堂》,大家好,我是全栈小5。 这是《Docker容器》系列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握。 温馨提示:博主能力有限,理解

    2024年03月10日
    浏览(66)
  • Vue+Electron打包桌面应用(从零到一完整教程)

    切记,整个项目的json文件不能有注释,及时没报错也不行,否则运行命令时还是有问题 参考此视频 1- 1.创建项目 1- 2. 安装依赖运行项目 1- 3.配置Electron 1- 4.修改配置文件 1) vite.config.js 2)main.js(项目根目录新增) 此为electron运行的入口文件 3)preload.js(项目根目录下新增) 4)package

    2024年02月07日
    浏览(54)
  • 【Electron将HTML项目打包成桌面应用exe文件】

    1、初始化 此时项目多出一个package.json文件。 2、在根目录下新建main.js 3、安装electron 4、配置package的js文件 5、打包执行以下命令,此时会输出文件夹/out,找到exe文件就是打包程序的快捷方式,但是还没结束。我们只是通过electron-packager,将electron应用打包成可执行exe,我们还

    2024年02月10日
    浏览(40)
  • Docker的常用命令||Docker是个流行的容器化平台,它允许你打包、分发和运行应用程序。

    Docker是一个流行的容器化平台,它允许你打包、分发和运行应用程序。以下是一些常用的Docker命令及其示例用法: 1. **docker run**: 用于运行一个新的容器实例。     例如,运行一个Nginx容器: 2. **docker stop**: 停止一个正在运行的容器。      例如,停止一个名为`my_nginx_conta

    2024年02月19日
    浏览(50)
  • 关于为在手机上开发/运行Python程序的研究报告以及为手机打包Python应用的研究。

    前一段时间莫名地想用Python开发手机应用。经过日日夜夜在互联网上的挖掘于是有了这样一篇导航性的文章兼入坑/踩坑记录。必须承认Python在手机领域的进展还停留在研发阶段,作者也是真心希望更多的大佬参与到这个领域的先驱部队中,开发出一款完备的引擎之类的。 如

    2024年02月14日
    浏览(68)
  • 已经打包好了的vue dist文件夹,如何用electron打包成exe桌面应用

    先在项目根目录下(非dist根目录)安装electron electron-packager 再在项目根目录下(非dist根目录)安装electron-packager 然后在dist文件夹下创建main.js文件,内容为 再创建一个文件package.json 在非dist文件夹(注意,是非dist文件夹,就是原本没打包的项目文件里)的package.json文件里,改

    2024年02月19日
    浏览(55)
  • 新星计划 Electron+vue2 桌面应用 2 搭建及运行

    基础内容:新星计划 Electron+vue2 桌面应用 1 基础_lsswear的博客-CSDN博客 根据使用过的经验和官网的描述,大概可以有四种方式: 自己创建项目(仅使用npm) 用Electron脚手架 HBuilder编译为web,再用Electron编译 vue脚手架,安装Electron,再编译 这次挨个试下,看哪个方便。第三种试

    2024年02月06日
    浏览(46)
  • web前端项目使用electron打包成跨平台桌面端程序(Windows)

    Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入 Chromium 和 Node.js 到 二进制的 Electron 允许您保持一个 JavaScript 代码代码库并创建 在Windows上运行的跨平台应用 macOS和Linux——不需要本地开发 经验。 在使用Electron进行开发之前,您需要安装 Node.js。 我们建

    2024年02月16日
    浏览(83)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包