最近在使用electron做一款公司的应用,使用的electron版本是8.5.5,发现控制台偶尔会出现这个报错:
Error: Error invoking remote method ‘ELECTRON_GUEST_VIEW_MANAGER_CALL’: Error: (-3) loading ‘http://www.xxxx’
debug了一下发现是在执行webview.reloadIgnoringCache()时引起的,上外网查了一下也有开发者出现了这个报错,大部分都是跟webview有关,动态修改webview.src好像也会报这个错,最后在https://github.com/electron/electron/issues/25421
看到一个答案:
这个答主说把app.allowRendererProcessReuse设为false即可,
但是我试了一下,在background.js中设置app.allowRendererProcessReuse = false并没有效果
于是查了一下app.allowRendererProcessReuse的文档
大概翻译一下第一句:“一个布尔值,当为true时将禁用Electron为确保渲染进程在每次重定向时重新启动而设置的重写。此属性的当前默认值为true”
这个属性在electron9.0及之后的版本是true,在9.0之前的版本是false,我用的electron版本是8.5.5,原本就是false,于是我尝试把它设为true
app.allowRendererProcessReuse = true
然后再把webview.reloadIgnoringCache()换成webview.reload()就再也没有出现过这个错误了!
参考链接:
https://github.com/electron/electron/issues/24171
https://github.com/electron/electron/issues/25421