我正在构建一个电子应用,如果发生崩溃,必须重新加载渲染过程窗口。
目前我可以从主流程
重启应用程序app.relaunch();
app.quit();
但我无法检测到窗口崩溃。 我尝试使用
win.on('unresponsive', () => { ... } );
但是当我崩溃这个过程时,事件没有生成。
要使我尝试的过程崩溃:
process.crash()
两种方式都成功地使进程崩溃,但我再也无法找到检测它的方法。
我还尝试在渲染过程中使用window.onerror(...)
并在检测到崩溃时通过IPC向主进程发送消息,但这似乎不起作用。
答案 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 登录时自动启动应用程序