Es cierto que con los navegadores modernos, el enganche de window.onerror para errores que burbujean hasta la parte superior junto con la adición de controladores de eventos jQuery para errores Ajax capturará prácticamente todos los objetos Error arrojados en su código de cliente. Si está configurando manualmente un controlador para window.onerror, en los navegadores modernos esto se hace window.addEventListener('error', callback)
, mientras que en IE8 / 9 debe llamar
window.attachEvent('onerror', callback)
.
Tenga en cuenta que, a continuación, debe considerar el entorno en el que se manejan estos errores y el motivo para hacerlo. Una cosa es detectar tantos errores como sea posible con sus trazas de pila, pero el advenimiento de las modernas herramientas de desarrollo F12 resuelve este caso de uso al implementar y depurar localmente. Los puntos de interrupción, etc., le proporcionarán más datos de los que están disponibles en los controladores, especialmente para los errores lanzados por bibliotecas de terceros que se cargaron desde solicitudes CORS. Debe realizar pasos adicionales para indicar al navegador que proporcione estos datos.
El problema clave es proporcionar estos datos en producción, ya que sus usuarios tienen la garantía de ejecutar una gama de navegadores y versiones mucho más amplia de la que posiblemente pueda probar, y su sitio / aplicación se romperá de formas inesperadas, sin importar cuánto control de calidad arroje. eso.
Para manejar esto, necesita un rastreador de errores de producción que capte todos los errores lanzados en los navegadores de sus usuarios, a medida que usan su código, y los envía a un punto final donde usted puede ver los datos y usarlos para corregir los errores a medida que ocurren. . En Raygun (descargo de responsabilidad: trabajo en Raygun) hemos hecho un gran esfuerzo para brindar una gran experiencia para esto, ya que hay muchas trampas y problemas a considerar que una implementación ingenua no se realizará.
Por ejemplo, es probable que agrupe y minimice sus activos JS, lo que significa que los errores lanzados desde el código minificado tendrán trazas de pila basura con nombres de variables alterados. Para esto, necesita su herramienta de compilación para generar mapas de origen (recomendamos UglifyJS2 para esta parte de la canalización), y su rastreador de errores para aceptarlos y procesarlos, convirtiendo los rastros de pila destrozados en otros legibles por humanos. Raygun hace todo esto de inmediato e incluye un punto final de API para aceptar mapas de origen a medida que los genera su proceso de compilación. Esto es clave, ya que deben mantenerse como no públicos, de lo contrario, cualquiera podría desminificar su código, negando su propósito.
La biblioteca cliente raygun4js también viene con window.onerror
navegadores modernos y heredados, así como con ganchos de jQuery listos para usar, por lo que para configurar esto solo necesita agregar:
<script type="text/javascript" src="//cdn.raygun.io/raygun4js/raygun.min.js" </script>
<script>
Raygun.init('yourApiKey').attach();
</script>
También hay un montón de funcionalidades integradas, incluida la capacidad de mutar la carga útil del error antes de que se envíe, agregando etiquetas y datos personalizados, metadatos sobre el usuario que vio el error. También elimina la molestia de obtener buenos seguimientos de pila de los scripts CORS de terceros mencionados anteriormente, lo que resuelve el temido 'Error de script' (que no contiene ningún mensaje de error ni seguimiento de pila).
Un tema más crucial es que debido a la gran audiencia en la web, su sitio generará miles de instancias duplicadas de cada error. Un servicio de seguimiento de errores como Raygun tiene la inteligencia de agruparlos en grupos de errores para que no se ahogue en una avalancha de notificaciones y le permite ver cada error real listo para ser reparado.