2012-01-19 15 views
8

Al momento disponiamo di un codice generico per segnalare errori dal nostro codice o codice di terze parti. Il nostro progetto è un progetto JQM/PhoneGap per iOS. Quello che sta accadendo è che otteniamo sempre lo stesso errore inutile ... TypeError: 'undefined' non è una funzione ... senza numero di riga o altre informazioni utili. C'è un modo per cambiare il codice per ottenere COSA non è definito o DOVE è?Migliorare la segnalazione degli errori di 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; 
}; 

Qualsiasi aiuto per il debug di errori javascript può essere d'aiuto.

+1

Ho lo stesso problema. Sembra un bug di UIWebView, perché quando eseguo lo stesso codice su safari/chrome, viene definito il numero riga. Dovremmo segnalare il bug ad Apple: https://bugreport.apple.com - più riempiamo il report su questo bug, più diventerà importante (non è possibile votare per un bug, quindi il team Apple darà la priorità alla conta dei bug il numero di duplicati). – Samuel

+0

Non sono sicuro se questo funziona per i dispositivi mobili, ma in passato ho usato questo: https://github.com/posabsolute/jQuery-Error-Handler-Plugin attivando anche la modalità di debug in Mobile Safari e utilizzando console.log ('errore Messaggio'); funziona anche –

+0

Guardando il codice per il plugin, fa la stessa cosa del codice precedente (sostituisce onerror con il codice delle email/registra l'errore). Quindi otterrò sempre TypeError: 'indefinito' non è una funzione, linea: indefinita. Compilerò la segnalazione di bug mentre continuo a cercare un modo per aggirare il problema. – Twomz

risposta

0

Avete sentito parlare di Ripple? È un emulatore mobile per Chrome progettato per testare le applicazioni PhoneGap.

Ciò potrebbe aiutarti a trovare i tuoi errori prima di eseguire il debug sui dispositivi.

1

Negli ultimi mesi, i browser hanno esteso la firma di window.onerror per fornire ulteriori informazioni.

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

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

    // send error to your logger 

} 

Questo dovrebbe dare molte più informazioni. Ma ci sono ancora cose in cui hai bisogno di un contesto migliore. Dovresti controllare alcuni strumenti di terze parti per questo come TrackJS che ti danno automaticamente questo, oltre a ulteriori informazioni su come si è verificato l'errore.

Disclaimer: io sono uno degli autori originali del TrackJS, quindi so un sacco sugli errori JavaScript :)

Problemi correlati