我正在尝试为基于浏览器的JS创建一些热重新加载功能。一切都很顺利,除了一个问题 - 当我在文件系统上编辑文件并且浏览器加载新文件时,如果文件包含语法/引用错误或其他什么,浏览器将崩溃,无法恢复。这限制了热重新加载的好处,因为只要你进行包含错误的更改,浏览器就会崩溃,你的热负载幸福已经结束,你必须进行浏览器刷新才能恢复,这会破坏整个事情的目的。
因此,为了使热重新加载最有用,在浏览器出错时,我可以解决我的文件中的问题,然后热加载器将重新加载改进的文件,浏览器可以恢复
有没有办法在浏览器中显示错误消息而不会在运行时出错时进入不可恢复的状态?
我能够获得我想要的大部分功能:
window.onerror = function myErrorHandler(errorMsg, url, lineNumber) {
alert(errorMsg+'\n\nurl:'+url+ '\n\nLine number:'+lineNumber);
return true;
};
不幸的是,这不起作用,它让我陷入了无法恢复的境地
window.onerror = function myErrorHandler(errorMsg, url, lineNumber) {
var html = "<div>" +errorMsg+'\n\nurl:'+url+ '\n\nLine number:'+lineNumber +"</div>"
$('body').html(html);
return true;
};
看起来任何DOM操作都会阻止你恢复你的程序,但这可能过于简单了 - 任何人都知道发生了什么?我宁愿避免锁定浏览器的警报消息,需要点击才能消失。
也许某些非阻塞模式对话框可以,只要它不写入DOM。