在渲染过程中崩溃后的电子恢复

时间:2017-08-28 12:36:12

标签: electron crash-recovery

我正在构建一个电子应用,如果发生崩溃,必须重新加载渲染过程窗口。

目前我可以从主流程

重启应用程序
app.relaunch();
app.quit();

但我无法检测到窗口崩溃。 我尝试使用

win.on('unresponsive', () => { ... } );

但是当我崩溃这个过程时,事件没有生成。

要使我尝试的过程崩溃:

  • 调用process.crash()
  • 使用所有可用内存。

两种方式都成功地使进程崩溃,但我再也无法找到检测它的方法。

我还尝试在渲染过程中使用window.onerror(...)并在检测到崩溃时通过IPC向主进程发送消息,但这似乎不起作用。

2 个答案:

答案 0 :(得分:0)

您应该在webContents中寻找“坠毁”事件。选中https://electronjs.org/docs/api/web-contents#event-crashed

例如,在主流程中添加以下内容:

win.webContents.on('crashed', (e) => {
    app.relaunch();
    app.quit()
});

答案 1 :(得分:0)

也许可以查看“pm2-windows-service”,它可以将您的应用程序安装为 Windows 服务并观察它是否崩溃,然后重新启动它

https://www.npmjs.com/package/pm2-windows-service

电子也有应用程序。setLoginItemSettings({ openAtLogin: true }); 但这不能防止崩溃,只提供在 Windows 登录时自动启动应用程序