機能をリクエストしバグを報告しますか?
バグ。
現在の動作は何ですか?
エラーのmessage
プロパティが[object ErrorEvent]
としてログに記録されることがあります(常にではありません)。 https://docs.sentry.io/clients/javascript/integrations/angular/で説明されているように、AngularでのRavenの標準実装に従いました
期待される動作は何ですか?
通常のエラーメッセージを表示します。
レイヴン3.17.0
Angular 4.3.1
Webpackビルド
CLIを使用しない
CDNバージョン
AngularドキュメントのどこかにErrorEvent
定義がありますか? どうやらこれは正しい方法でError
を「継承」していません。
問題はTraceKitのtraceKitWindowOnError()
メソッドにある可能性があり、 message
引数がErrorEvent
可能性があることを考慮していないようです( MDNドキュメントを参照)
@benvinegar ErrorEvent
いくつかのドキュメントがあります: https : //developer.mozilla.org/en-US/docs/Web/API/ErrorEvent
これによっても影響を受け、これらのユーザーも影響を受けます。
https://forum.sentry.io/t/reporting-object-errorevent/1807
[email protected] (ただし、古いバージョンでもしばらくの間発生しています)
Angular 4.x
CLIの使用
ここでもIonic3と
<script>
undefined.foo();
</script>
^これはあなたのhtmlで[object ErrorEvent]
として歩哨を介してサファリにログインしています。 正しいメッセージはTypeError: undefined is not an object (evaluating 'undefined.foo')
。
iframeを作成しようとするscriptタグを介してコードを挿入する外部スクリプトがありますが、それはsafariによってブロックされています。 エラーは挿入されたスクリプトタグに起因するため、歩哨は[object ErrorEvent]
報告するだけです
[object Event]
として報告された歩哨からの別のエラーは、flowplayerからのものです。 フロープレーヤーは
jQueryElement.trigger('error', [api, {code: 5}]);
jQueryを埋め込むことでそれを再現でき、次のようにします。
$('div:first').trigger('error')
セントリーはこのようなものを見ています
確かに非常に直列化可能ではないthatsのが、のようなエラーerror on element from jQuery - context <div class="foo><div class="bar" ...
その後、はるかに参考になる[object Event]
これも影響を受けます。
@daangeerdink @jdelaune @rosslavery @tgensol誰かが私がこれを再現するのを助けることができる最小のコードを提供できますか?
@sod確認したところ、
エラーが非常に不透明で、コードベースのどの部分がエラーをスローしているのかがわからないため、個人的に再現を提供することはできません。 使用するスタックトレースも、自分のコードなのかサードパーティのライブラリなのかを判断するためのエラーメッセージもありません。
うまくいけば、他の誰かが提供できる簡単な例を持っているといいのですが、申し訳ありませんが、これ以上の支援はできませんでした。
私たちもこの問題を抱えています。 過去10日間のデータを共有できます(このタイプのイベントは22k、ユーザーは13k)。 それがあなたがそれを再現するのに役立つことを願っています。
@kamilogorekこのタイプのエラーは200万件あります。 それが私たちの問題だと思いましたが、正しく追跡することができませんでした。
問題を見つけました。 ErrorEvent
によってエラーとして扱われていませんisError
見つけることができる機能、UTILこちら。 便宜上、関数定義も貼り付けます。
function isError(value) {
switch ({}.toString.call(value)) {
case '[object Error]':
return true;
case '[object Exception]':
return true;
case '[object DOMException]':
return true;
default:
return value instanceof Error;
}
}
コンソールで簡単なテストを行って、この関数がErrorEvent
に対してtrueを返すかどうかを確認しましたが、そうではありませんでした。
isError
は、 captureException
メソッドで使用され、例外パラメーターがエラーであるか、単にメッセージであるかを判別します。 captureException
は、例外が_実際に_エラーではないと判断した場合、 captureMessage
を使用してダッシュボードに例外を送信します。 この場合、Ravenはスタックトレースを計算したり、例外を「処理」したりしません。 そのまま送り出します。
ErrorEvent
オブジェクトに対してtrueを返すようにisError
を更新すべきでない理由はありますか?
ErrorEventオブジェクトに対してtrueを返すようにisErrorを更新すべきでない理由はありますか?
はい。 実際にはError
子孫ではないためです( Event
子孫です)。 たとえば、 stack
プロパティはありません(AFAICT、コンソールで遊んでいます)。 つまり、実際には正しく処理されない可能性があります。
このエラーがどのように生成されるかの例をライブで見て、それを処理するための最良の方法を理解できると便利です。
コンストラクタErrorEvent
かかるError
そのようにあなたがそれらを簡単に扱うことができるように、:
if (isErrorEvent(ex)) {
ex = ex.error;
}
ここで構造の定義を見ることができErrorEventInit
ハッシュを見てください。 これはオプションのパラメーターなので、上記のソリューションでは、 ErrorEvent.error
が未定義の場合は処理されないと思います。
私はちょうどそれがちょうど増強など、単純なようではないことを意味-確かに、私はこれを解決することができると信じてisError
返すためにtrue
。
わかります。 数分でPRをします。
3.19.x
修正
ありがとう@shcallaway! 👍
3.19.1
まだこの問題が発生しているようです🤔
@PhilippSpoこのイベントはどのブラウザから来ていますか? ErrorEvent
は、一部の古いモバイルブラウザとIEでサポートされていないため、通常のソリューションにフォールバックする必要がありました。
@kamilogorek Chrome 61.0.3163
Chrome61でも見ています。 😕私はすぐにそれを調べようとします。
ありがとう@shcallaway
Safari 11.0、Mac OS10.13でも発生します
'message'パラメータがErrorEventオブジェクトの場合、 traceKitWindowOnErrorは入力パラメータを正しく処理しないよう
'ex'は未定義です。 次に、 'message'フィールドが文字列ではなくErrorEventであるオブジェクトを使用してnotifyHandlersを呼び出します。
これは、_makeRequestで強調すると、意味のないメッセージを生成します。
調査@ michal-rumanekに感謝します、私はすぐにこの問題を処理しようとします(今週は暇がありません)。
@kamilogorek 、何か進展はありますか? ;-)
こんにちは、私はこれらのエラーをたくさん受けています[object Object]
。
Angular 4
Chrome 62.0.3202
Raven-js 3.20.1
最も参考になるコメント
問題を見つけました。
ErrorEvent
によってエラーとして扱われていませんisError
見つけることができる機能、UTILこちら。 便宜上、関数定義も貼り付けます。コンソールで簡単なテストを行って、この関数が
ErrorEvent
に対してtrueを返すかどうかを確認しましたが、そうではありませんでした。isError
は、captureException
メソッドで使用され、例外パラメーターがエラーであるか、単にメッセージであるかを判別します。captureException
は、例外が_実際に_エラーではないと判断した場合、captureMessage
を使用してダッシュボードに例外を送信します。 この場合、Ravenはスタックトレースを計算したり、例外を「処理」したりしません。 そのまま送り出します。ErrorEvent
オブジェクトに対してtrueを返すようにisError
を更新すべきでない理由はありますか?