7

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

目前我可以从主进程重新启动应用程序

app.relaunch();
app.quit();

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

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

但是当我使进程崩溃时,事件并没有生成。

要使我尝试的过程崩溃:

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

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

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

4

2 回答 2

2

您应该在 webContents 中查找“崩溃”事件。检查https://electronjs.org/docs/api/web-contents#event-crashed

例如在主进程中放这样的东西:

win.webContents.on('crashed', (e) => {
    app.relaunch();
    app.quit()
});
于 2018-09-13T05:52:24.893 回答
0

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

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

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

于 2021-06-29T09:21:32.830 回答