2016-01-29 2 views
8

ember(-cli)アプリケーションでonerrorが処理しないjavascriptエラーはありますか?つまり、window.onerrorにハンドラを追加する必要はありますか?ember(-cli)アプリはwindow.onerrorをトリガーできますか?

私のテストでは、Emberのエラーによって処理されないエラーは発生しませんでした。構文エラーはember-cliのビルドプロセスを超えませんでした。

+1

あなたは 'Ember.onerror'と' Ember.RSVP.onerror window.onerror' '処理する必要があります' – runspired

+0

' window.onerror'をなぜ扱うべきかの証明や例がありますか? – pogopaule

+0

'Ember.onerror'をすでに処理している場合、' Ember.RSVP.onerror'を本当に処理する必要はありません。 [コード](https://github.com/emberjs/ember.js/blob/v2.2.2/packages/ember-runtime/lib/ext/rsvp.js#L71)を参照してください。 – pogopaule

答えて

0

私が経験したところでは、そうする強い理由がなく、自分が何をしているのかを知っていない限り、私はwindow.onerrorの実装をアドバイスしません。

私の知る限り、Emberのonerrorメソッドはすべてwindow.onerrorにピギーバックし、オーバーライドするとアプリ内のすべてのエラーを無効/無効にする可能性があります。

ケース・イン・ポイントでは、私は最近、私のすべてのjsエラーがコンソールへのロギングを完全に停止したことに気づいた経験がありました。その理由は私のチームの別の開発者がindex.htmlにブートストラップして<script>というタグを注入して、何らかのエラー報告スクリプトにwindow.onerrorを利用したからです。その結果、windowを無効にすると、バーブリングの仕方で動作するため、emberのonerrorのすべてが文字通り無効になりました。

window.onerrorをオーバーライドする場合は、常にブラウザでデフォルトのエラー処理が行われないように、常にfalseが返されるようにする必要があります。

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

私はそれがある程度明確にするのに役立ちます願っています。

2

EmberJSすると、その境界内が起こるエラーを含むの優れた仕事をしていません。あなたのEmberコードによって引き起こされるエラーはすべて、Ember固有のハンドラに集められるはずです。

ただし、ブラウザのJavaScriptは複雑な獣です。 Emberのoutsideが内部でキャプチャされることはなく、グローバルwindow.onerrorによってのみ公開される可能性があります。これらのいくつかの例には以下のものがあります

  • 無制限のコールバックを、そのようなストライプ、ツイッター、または広告などsetTimeoutaddEventListener
  • 非燃えさしのJavaScriptライブラリとの統合、
  • できるブラウザ拡張スクリプトのようなネイティブ関数に予測不可能な方法でDOMとやり取りします。

あなたの訪問者で何が起こっているかの全体像を得るために、あなたはおそらくEmber.onerrorwindow.onerrorの両方に接続し、戻ってあなたのログにレポートを送信する必要があります。あなたが積極的に開発していない場合でも、ブラウザの変更によってアプリケーションに突然のバグが表示される可能性があります。 this webkit bug that caused ember to throw errorsのように。 TrackJSのようなEmberアプリから自動的にエラーを記録する良いオプションがあります。

開示:私はTrackJSの創設の開発者の一人ですので、私はエラーの多くをデバッグしてきました:)

関連する問題