@sentry/browser
@sentry/node
raven-js
raven-node
_(ノードのレイヴン)_5.10.2
私のプロジェクトでは、多くの場合、キー(currentTarget、isTrusted、target、type、有用な情報なし)でキャプチャされたイベント非エラープロミス拒否などのエラーが発生します。 そして、追加のデータは
__serialized__ = {
currentTarget: [object Null],
isTrusted: [Circular ~],
target: head > script[type="text/javascript"],
type: error
}
イベントインスタンスのように見えます。 限られた情報で、このバグがどこで引き起こされるのかわかりませんが、誰かが同じ問題に遭遇したことがありますか?
また、ここ数週間でこれらを見始めました。 私はそれを調べ始めたばかりなので、それを引き起こしている原因についてこれ以上の詳細はありません。
ここでも同じですが、Sentryv5.15.5になりました。
誰かがセントリーでキャプチャされたこのタイプのイベントへのリンクを提供できますか? スクリプトの読み込みエラーのようです(このイベントがトリガーされたtarget
注意してください)
@kamilogorek会社のメールアドレスを送って
@Santas [email protected]
さらに例が必要な場合は、 @ kamilogorekにも送信できます。お知らせください。
@sheelahはい、お願いします
@sheelah正直なところ、ここで改善できることはあまりありません。 JSは、私たちがすでに提供している詳細情報を提供しません。 promiseオブジェクトのインスタンスが拒否されるたびに、 onunhandledrejection
イベントがトリガーされます(OPの説明のonerror
についても同じことが言えます)。
https://developer.mozilla.org/en-US/docs/Web/API/Window/unhandledrejection_event
しかし、誰かがそこにランダムなものを渡すのを妨げるものは何もありません。
したがって、このPromise.reject("whatever")
またはPromise.reject(jQueryBecauseWhyNot)
なコードは完全に有効なJSコードです。
プリミティブ値ではないもの、スタックトレースを含むオブジェクト(例: Error
)、または内部DOM例外に遭遇した場合は常に、単純なオブジェクトのシリアル化にフォールバックして、可能な限りの情報を抽出する必要があります。それの。 この「任意のランダムな値」がイベントハンドラーに渡される可能性のあるパスのリストについては、 eventbuilder.ts
ファイルをください–
残念ながら、より多くの種類の入力を処理するために、これ以上一般的なものにすることができるかどうかはわかりません。
誰かがそのプロセスに関してフィードバックを持っているなら、私は提案を完全に受け入れます。
(他のすべての人に会話を公開するために、電子メールの代わりにここで回答しました)
私の観察から:
ZXing
やbrowser-image-compression
など、いくつかのライブラリをWebアプリにインストールしていますが、サードパーティの追跡スクリプトはありません。ProgressEvent
-これはHTTPリクエストライブラリの一部のようです(私はaxiosを使用しています)。ADDITIONAL DATA
__serialized__ | {
currentTarget: [object Null],
isTrusted: [Circular ~],
target: [object FileReader],
type: error}
-- | --
また、「値:nullでキャプチャされたエラーなしのpromise拒否」というレポートを受け取りました。 上記の@ anton-botと同様に、影響を受けるユーザーはMac OS X10.15.6でSafari13.1.2を使用していました。
コンパイルされたアプリコードでreject(
呼び出しを調べましたが、おそらくnull
オブジェクトが提供されていますが、何も見つかりませんでした。そのため、ブラウザー拡張機能なのか、それとも3番目のオブジェクトなのか疑問に思いました。パーティースクリプト。 スタックトレースやブレッドクラムがないため、正確に何が起こったのかを知ることは非常に困難です。
過去2週間もこれを見てきました。 私たちのサイトでは、グーグルマップのJavaScript APIを使用しているページでしか見たことがないので、それに関連しているのではないかと感じています。 グーグルマップを使用するURLでこれを見ている人はいますか?
編集:これまでのところ、iOSとAndroidで問題が発生しています
編集:追加データ:
{
currentTarget: [object Null],
isTrusted: [Circular ~],
target: head > script[type="text/javascript"],
type: error
}
@asbjornhいいえ、ページにGoogleマップがありません
@kamilogorek OPの追加データ(および私のもの)は、このPromise.reject(new Event("error"))
ようなものによって引き起こされますか? または、この状況のSentryイベントには、常にブラウザーイベントのように見えるペイロードがありますか?
@asbjornhはい、このフローを通過します-https
私も同じエラーが発生します
このエラーにより、クォータ容量が使い果たされました。
過去24時間に289のイベントがあり、ページはまだ公開されていません。
{
currentTarget: [object Null],
isTrusted: [Circular ~],
target: head > link,
type: error
}
next.jsを使用しています
ここでcraと同じ😅
この問題は、おおよそ次のような原因で発生しているようです。
new Promise((resolve, reject) => {
const script = document.createElement('script');
script.src = src;
script.onload = resolve;
script.onerror = reject;
document.body.appendChild(script);
});
onerror
フックは、実際にはError
インスタンスではなく、 Event
オブジェクトを受け取ります。これにより、上記の問題が発生します。 これは、 https : Event
をError
ラップすることで回避できます。
new Promise((resolve, reject) => {
const script = document.createElement('script');
script.src = src;
script.onload = resolve;
script.onerror = event => {
reject(new Error(`Failed to load ${event.target.src}`));
};
document.body.appendChild(script);
});
私の場合、誰かが同様のケースを抱えている場合に備えて、Firefoxでそれを引き起こしたのはNext.jsの9.5.2
プリフェッチメカニズムhttps : 9.5.3
またはCanaryにアップグレードすることで解決できます。
ただし、ブラウザではエラーははるかに冗長です。
Uncaught (in promise)
error
bubbles: false
...
...
as: "fetch"
assignedSlot: null
attributes: NamedNodeMap(3
0: href="/_next/data/wmQYPCwvbuBulJfEwTMRf/smartwatches/fitbit-ionic.json"
1: rel="prefetch"
2: as="fetch"
as: as="fetch"
href: href="/_next/data/wmQYPCwvbuBulJfEwTMRf/smartwatches/fitbit-ionic.json"
length: 3
rel: rel="prefetch"
...
...
isTrusted: true
originalTarget: <link href="/_next/data/wmQYPCwvbuBu…tches/fitbit-ionic.json" rel="prefetch" as="fetch">
returnValue: true
srcElement: <link href="/_next/data/wmQYPCwvbuBu…tches/fitbit-ionic.json" rel="prefetch" as="fetch">
target: <link href="/_next/data/wmQYPCwvbuBu…tches/fitbit-ionic.json" rel="prefetch" as="fetch">
timeStmp: 25366
type: "error"
...
Sentryにこのデータをキャプチャさせるにはどうすればよいですか?
最も参考になるコメント
このエラーにより、クォータ容量が使い果たされました。