fix(core): handle global script error (#8576)

This commit is contained in:
forehalo
2024-10-22 07:49:48 +00:00
parent be3125b73d
commit ff95f12d66

View File

@@ -33,13 +33,25 @@
document.body.append(errorEl); document.body.append(errorEl);
} }
function registerGlobalErrorHandler() { /**
function handler(e) { * @param event {PromiseRejectionEvent|ErrorEvent}
var error = */
'error' in e ? e.error : e.reason instanceof Error ? e.reason : null; function handler(event) {
var error;
if ('error' in event) {
error =
event.error ||
(event.message === 'Script error.'
? new SyntaxError(event.message)
: new Error(event.message));
} else {
error = event.reason;
}
console.error('unhandled unrecoverable error', error); console.error('unhandled unrecoverable error', error);
const shouldCache = var shouldCache =
// syntax error // syntax error
error && error instanceof SyntaxError; error && error instanceof SyntaxError;
@@ -47,9 +59,11 @@
return; return;
} }
e.stopImmediatePropagation(); event.stopImmediatePropagation();
showGlobalErrorPage(); showGlobalErrorPage();
} }
function registerGlobalErrorHandler() {
if (typeof document !== 'undefined') { if (typeof document !== 'undefined') {
globalThis.addEventListener('unhandledrejection', handler); globalThis.addEventListener('unhandledrejection', handler);
globalThis.addEventListener('error', handler); globalThis.addEventListener('error', handler);