Considere un archivo de script con
let something = undefined; let undefined = something.test;Esto lanzará en la consola de Chrome:
Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'test')¿Cómo se puede enviar ese error a una Alerta al usuario, en lugar de acceder a la consola?
Los dos enfoques a continuación se han probado sin éxito: también envolviendo la tarea en un lanzamiento de intento de captura.
window.onerror = function (errorMsg, url, lineNumber, column, errorObj) { alert( `Error: ` + errorMsg + ` Script: ` + url + ` Line: ` + lineNumber + ` Column: ` + column + ` StackTrace: ` + errorObj ); }; window.addEventListener("error", handleError, true); function handleError(evt) { if (evt.message) { // Chrome sometimes provides this alert("error: "+evt.message +" at linenumber: "+evt.lineno+" of file: "+evt.filename); } else { alert("error: "+evt.type+" from element: "+(evt.srcElement || evt.target)); } }Pensé que esto podría ser un problema de orden de carga, pero la función está en un archivo de script separado que se carga antes del archivo con la asignación incorrecta.
¿Intentaste atrapar? Esto es trabajo para mí.
try { let c = undefined.test; } catch(error) { alert(error); }Ok, pude hacer que window.onerror funcionara ejecutándolo en un servidor localhost
En un archivo javascript definí lo siguiente.
window.onerror = function (errorMsg) { alert(errorMsg); };En otro causé el error con:
let c = undefined.test;Creo que la razón es el problema CORS ver:
Ejecutar este código en un servidor http de python local muestra el mensaje de error completo en la alerta. Hazme saber si esto funciona para ti.