2013-10-11 21 views
6

Ho implementato client registrazione eccezione lato usando window.onerror, dove posso recuperare l'errore e stack corrente traccia e inviarlo al server utilizzando AJAXLe mappe di sorgenti JavaScript funzionano quando si verificano errori?

window.onerror = function(message, url, line) { 

     var stackTrace = printStackTrace(); //get stack trace 

     //send message, url, line and stackTrace to the server using an ajax call 
    } 

dove printStackTrace è una funzione fornita da questa libreria: http://stacktracejs.com/

Il problema è che in produzione tutti i file JavaScript vengono minimizzati, quindi la traccia dello stack e il numero di riga non sono molto utili poiché tutti gli errori sono riportati sulla riga 1 nel file che è normale in quanto la versione minificata contiene una singola riga di codice. Ad esempio:

Message: Object doesn't support property or method 'indexOf' 
URL: http://[server]/[site]/content/combined/combined.635EE367354E6DF721593CAC56FECF95.min.js 
Line: 1 

Questo può essere migliorato utilizzando le mappe di origine o funziona solo quando Strumenti di sviluppo è attivo?

Quello che vorrei è ottenere l'intera traccia dello stack utilizzando le mappe di origine (o almeno il numero di linea reale) quando si verifica un errore per un utente che non ha abilitato gli strumenti di sviluppo/le mappe di origine. Ciò è effettivamente possibile ?

+0

Soluzione necessaria per lo stesso problema. Quanto tempo ci stai ora? – IsmailS

+0

@iSid non ha trovato una soluzione. sembra che non sia realmente possibile fino a quando il browser non lo implementa. non so più informazioni di ciò che è scritto nella risposta. spiacente – SzilardD

+0

@iSid questa domanda sembra avere più soluzioni: http://stackoverflow.com/questions/19420604/angularjs-stack-trace-ignoring-source-map – xmojmr

risposta

4

È possibile ottenere tutte le informazioni contenute nelle mappe di origine e progettare una traccia di stack da soli, ma AFAIK non offre ancora una soluzione elegante per questo. In entrambi i casi, richiederebbe un minimo del file della mappa e probabilmente il file di origine non elaborato. E avrai alcuni problemi con i browser incrociati poiché non tutti i browser supportano ancora pienamente le mappe di origine.

Sembra stack trace ha questo nel loro piano, ma non ha nessuno in esecuzione su di esso ancora: https://github.com/eriwen/javascript-stacktrace/issues/44

Get Sentry lo fa fare questo come una parte del loro js registrazione di utilità, ma è avvolto all'interno di un più strumento multiuso e credo che supporti solo la registrazione completa dello stack trace in Chrome per ora: https://github.com/getsentry/raven-js

Problemi correlati