2016-01-29 10 views
8

Gibt es eine Art von JavaScript-Fehler, der nicht von onerror in einer Ember (-Cli) -Anwendung behandelt wird? In anderen Worten, ist es notwendig, einen Handler zu window.onerror hinzuzufügen?Kann eine ember (-cli) -App window.onerror auslösen?

In meinen Tests konnte ich keinen Fehler finden, der von Ember's onerror nicht behandelt werden würde. Syntaxfehler sind nicht über den Buildprozess von ember-cli gelangt.

+1

Sie behandeln sollte '' window.onerror' Ember.onerror' und 'Ember.RSVP.onerror ' – runspired

+0

Haben Sie einen Beweis oder ein Beispiel dafür, warum ich' window.onerror' behandeln sollte? – pogopaule

+0

Es gibt keine wirkliche Notwendigkeit, 'Ember.RSVP.onerror' zu behandeln, wenn Sie' Ember.onerror' bereits behandeln. Siehe [der Code] (https://github.com/emberjs/ember.js/blob/v2.2.2/packages/ember-runtime/lib/ext/rsvp.js#L71) – pogopaule

Antwort

0

Meiner Erfahrung nach würde ich die Implementierung eines window.onerror nicht empfehlen, es sei denn, Sie haben einen starken Grund, dies zu tun, und Sie wissen, was Sie tun können.

Nach meinem Wissen alle onerror Methoden von window.onerror von window.onerror embri und überschreiben es hat das Potenzial, alle Fehler in Ihrer App zu überschreiben/zu deaktivieren.

Fall in Punkt, ich hatte eine Erfahrung in letzter Zeit, wo ich bemerkte, dass alle meine js-Fehler aufgehört zu loggen auf Konsole insgesamt. Der Grund war, dass ein anderer Entwickler in meinem Team in meine index.html geladen hatte, um ein <script>-Tag zu injizieren, das window.onerror für ein Fehlerberichts-Skript verwendete. Das Ergebnis war, dass überschreiben window Literal deaktiviert alle von Embers, weil sie auf sprudelnde Weise arbeiten.

Ich denke, wenn Sie window.onerror überschreiben möchten, müssen Sie sicherstellen, dass es immer false zurückgibt, so dass es die Standardfehlerbehandlung im Browser nicht verhindert.

Siehe: https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror

Ich hoffe, dass bis zu einem gewissen Grad klären hilft.

2

EmberJS hat eine ausgezeichnete Arbeit zu enthalten Fehler, die innerhalb seiner Grenzen passieren. Fehler, die durch Ihren Ember-Code verursacht werden, sollten alle in den Ember-spezifischen Handler geleitet werden.

Browser JavaScript ist jedoch ein kompliziertes Biest. Alle JavaScript-Fehler, die außerhalb von von Ember passieren, würden intern nicht erfasst und könnten nur durch die globale window.onerror ausgesetzt werden. Einige Beispiele hierfür könnten sein:

  • Unbounded Rückrufe in native Funktionen wie setTimeout und addEventListener
  • Non-glut JavaScript-Bibliotheken und Integrationen, wie Streifen, Twitter oder Anzeigen
  • Browser-Erweiterung Skript, das kann Interaktion mit dem DOM auf unvorhersehbare Weise.

Um ein vollständiges Bild von dem, was mit Ihren Besuchern geschieht, sollten Sie wahrscheinlich sowohl Ember.onerrorundwindow.onerror befestigen und die Berichte zurück in Ihre Protokolle senden. Auch wenn Sie sich nicht aktiv weiterentwickeln, können Browseränderungen zu plötzlichen Fehlern in Ihrer Anwendung führen. Wie this webkit bug that caused ember to throw errors. Es gibt gute Möglichkeiten, Fehler automatisch von Ember-Apps wie TrackJS aufzuzeichnen.

Disclosure: Ich bin einer der Gründungs ​​Entwickler von TrackJS, so habe ich eine Menge Fehler auf Fehler :)