Fix the stack trace in caught syntax errors in Chrome

This commit is contained in:
Eevee (Evelyn Woods) 2021-03-10 19:07:03 -07:00
parent f1681d18c2
commit fa85d06271

View File

@ -9,7 +9,7 @@
"use strict"; "use strict";
{ {
let domloaded = false; let domloaded = false;
window.addEventListener('DOMContentLoaded', e => domloaded = true); window.addEventListener('DOMContentLoaded', ev => domloaded = true);
let _ll_log_fatal_error = (err, ev) => { let _ll_log_fatal_error = (err, ev) => {
document.getElementById('loading').setAttribute('hidden', ''); document.getElementById('loading').setAttribute('hidden', '');
@ -19,7 +19,9 @@
failed.classList.add('--got-error'); failed.classList.add('--got-error');
let stack = '(origin unknown)'; let stack = '(origin unknown)';
if (err.stack) { if (err.stack && err.stack.match(/\n/)) {
// Chrome sometimes gives us a stack that's actually just the message without
// any filenames, in which case skip it
stack = err.stack.replace(/^/mg, " "); stack = err.stack.replace(/^/mg, " ");
} }
else if (err.fileName) { else if (err.fileName) {
@ -38,12 +40,12 @@
window.addEventListener('DOMContentLoaded', () => _ll_log_fatal_error(err, ev)); window.addEventListener('DOMContentLoaded', () => _ll_log_fatal_error(err, ev));
} }
}; };
let error_listener = e => { let error_listener = ev => {
if (! e.error) if (! ev.error)
// Not a script error // Not a script error
return; return;
try { try {
ll_log_fatal_error(e.error, e); ll_log_fatal_error(ev.error, ev);
} }
catch (err) {} catch (err) {}
}; };