ember(-cli)アプリケーションでonerrorが処理しないjavascriptエラーはありますか?つまり、window.onerrorにハンドラを追加する必要はありますか?ember(-cli)アプリはwindow.onerrorをトリガーできますか?
私のテストでは、Emberのエラーによって処理されないエラーは発生しませんでした。構文エラーはember-cliのビルドプロセスを超えませんでした。
ember(-cli)アプリケーションでonerrorが処理しないjavascriptエラーはありますか?つまり、window.onerrorにハンドラを追加する必要はありますか?ember(-cli)アプリはwindow.onerrorをトリガーできますか?
私のテストでは、Emberのエラーによって処理されないエラーは発生しませんでした。構文エラーはember-cliのビルドプロセスを超えませんでした。
私が経験したところでは、そうする強い理由がなく、自分が何をしているのかを知っていない限り、私は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
私はそれがある程度明確にするのに役立ちます願っています。
エンバーは、あなたのルート
actions: {
error(error, transition) {
if (error && error.status === 400) {
//handle error
}
}
}
詳細に使用することができますエラーイベントが組み込まれています:https://guides.emberjs.com/v2.0.0/routing/loading-and-error-substates/
EmberJSすると、その境界内が起こるエラーを含むの優れた仕事をしていません。あなたのEmberコードによって引き起こされるエラーはすべて、Ember固有のハンドラに集められるはずです。
ただし、ブラウザのJavaScriptは複雑な獣です。 Emberのoutsideが内部でキャプチャされることはなく、グローバルwindow.onerror
によってのみ公開される可能性があります。これらのいくつかの例には以下のものがあります
setTimeout
とaddEventListener
あなたの訪問者で何が起こっているかの全体像を得るために、あなたはおそらくEmber.onerror
とwindow.onerror
の両方に接続し、戻ってあなたのログにレポートを送信する必要があります。あなたが積極的に開発していない場合でも、ブラウザの変更によってアプリケーションに突然のバグが表示される可能性があります。 this webkit bug that caused ember to throw errorsのように。 TrackJSのようなEmberアプリから自動的にエラーを記録する良いオプションがあります。
開示:私はTrackJSの創設の開発者の一人ですので、私はエラーの多くをデバッグしてきました:)
あなたは 'Ember.onerror'と' Ember.RSVP.onerror window.onerror' '処理する必要があります' – runspired
' window.onerror'をなぜ扱うべきかの証明や例がありますか? – pogopaule
'Ember.onerror'をすでに処理している場合、' Ember.RSVP.onerror'を本当に処理する必要はありません。 [コード](https://github.com/emberjs/ember.js/blob/v2.2.2/packages/ember-runtime/lib/ext/rsvp.js#L71)を参照してください。 – pogopaule