2012-01-19 11 views
8

Así que ahora tenemos un código genérico para informar errores de nuestro código o código de terceros. Nuestro proyecto es un proyecto JQM/Phonegap para iOS. Lo que sucede es que casi siempre obtenemos el mismo error inútil ... TypeError: 'undefined' no es una función ... sin número de línea u otra información útil. ¿Hay alguna manera de cambiar el código para obtener QUÉ no está definido o DONDE?Mejorando nuestro informe de errores de javascript

window.onerror = function myErrorHandler(errorMsg, url, lineNumber) { 
    //Handle errors not in a jquery event handler 
    //DebugMessage(errorMSg + " "+ url + " " + lineNumber); 
    var ex = new Error(errorMsg, url, lineNumber); 
    HandleError(ex, "window.onerror"); 
     //HandleError sends the error object to 
     //a webservice to log the error. 
    return true; 
}; 

Cualquier consejo sobre la depuración de errores de javascript sería útil.

+1

tengo el mismo problema. Parece un error de UIWebView, porque cuando ejecuto el mismo código en safari/chrome, se define lineNumber. Deberíamos informar el error a Apple: https://bugreport.apple.com - cuanto más informemos sobre este error, más se volverá importante (no es posible votar por un error, por lo que el equipo de Apple priorizará el recuento de informes de errores). la cantidad de duplicados). – Samuel

+0

No estoy seguro si esto funciona para dispositivos móviles pero he usado esto en el pasado: https://github.com/posabsolute/jQuery-Error-Handler-Plugin también activando el modo de depuración en Mobile Safari y usando console.log ('error mensaje'); funciona también –

+0

Al mirar el código del complemento, hace lo mismo que el código anterior (reemplaza onerror con el código de los correos electrónicos/registra el error). Así que seguiré obteniendo TypeError: 'undefined' no es una función, línea: undefined. Completaré el informe de fallas mientras continúo buscando una forma de evitar el problema. – Twomz

Respuesta

0

¿Has oído hablar de Ripple? Es un emulador móvil para Chrome diseñado para probar aplicaciones PhoneGap.

Eso podría ayudarlo a encontrar sus errores antes de depurar en los dispositivos.

1

En los últimos meses, los navegadores han extendido la firma de window.onerror para proporcionar más información.

window.onerror = function(msg, file, line, col, error) { 

    // backwards compat 
    if (!error) { 
    error = new Error(msg); 
    } 

    // send error to your logger 

} 

Esto debería darle mucha más información. Pero todavía hay cosas en las que necesitas un mejor contexto. Debería echar un vistazo a algunas herramientas de terceros como TrackJS que le dan automáticamente esto, más información adicional sobre cómo se produjo el error.

responsabilidad: yo soy uno de los autores originales de TrackJS, así que sé un montón sobre los errores de JavaScript :)

Cuestiones relacionadas