2013-10-11 7 views
6

Ich habe Client-Seite Ausnahme Protokollierung implementiert window.onerror, wo ich den aktuellen Fehler und Stack-Trace abrufen und an den ServerFunktionieren JavaScript-Quellkarten beim Erfassen von Fehlern?

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 
    } 

wo printStackTrace ist eine Funktion dieser Bibliothek zur Verfügung gestellt mit AJAX senden: http://stacktracejs.com/

Das Problem ist, dass in der Produktion alle JavaScript-Dateien minimiert werden, so dass die Stapelverfolgung und die Zeilennummer nicht wirklich hilfreich sind, da alle Fehler in Zeile 1 in der Datei gemeldet werden, da die verkleinerte Version eine einzelne Codezeile enthält. Beispiel:

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

Kann dies mithilfe von Quellzuordnungen verbessert werden, oder funktioniert das nur, wenn die Entwicklertools aktiv sind?

Was ich möchte ist die vollständige Stack-Trace mit den Quellkarten (oder zumindest die echte Zeilennummer), wenn ein Fehler für einen Benutzer auftritt, der nicht die Entwickler-Tools aktiviert/Quellkarten aktiviert hat. Ist das überhaupt möglich?

+0

Benötigen Sie eine Lösung für das gleiche Problem. Wie lange bist du jetzt dabei? – IsmailS

+0

@iSid habe keine Lösung gefunden. scheint, als wäre es nicht wirklich möglich, bis die Browser es implementieren. Ich weiß nicht mehr Informationen als in der Antwort geschrieben steht. Entschuldigung – SzilardD

+0

@iSid diese Frage scheint mehr Lösungen zu haben: http://stackoverflow.com/questions/19420604/angularjs-stack-trace-ignoring-source-map – xmojmr

Antwort

4

Sie können auf jeden Fall alle Informationen erhalten, die in den Quellkarten enthalten sind, und einen Stack-Trace erstellen, aber AFAIK gibt es dafür noch keine elegante Lösung. In jedem Fall würde es erforderlich sein, die Map-Datei mindestens zu verkleinern und wahrscheinlich die rohe Quelldatei. Und Sie werden einige schwierige Cross-Browser-Probleme haben, da noch nicht alle Browser Quellkarten vollständig unterstützen.

Es sieht aus wie Stack-Trace hat dies in ihrem Plan, aber nicht über jemand auf ihn ausführt noch: https://github.com/eriwen/javascript-stacktrace/issues/44

Get Sentry tut dies ihrer js als Teil tut Dienstprogramm Anmeldung, aber es ist innerhalb von einem eingewickelt mehr Multi-Purpose-Tool und ich glaube, es unterstützt nur die vollständige Stack-Trace-Protokollierung in Chrome für jetzt: https://github.com/getsentry/raven-js

Verwandte Themen