ネットワーク、ブラウザの問題、キャッシュなどにより、js のオンライン実行が開発環境と異なり、例外がスローされる可能性があります。 js の例外は、基本的にフロントエンド開発エンジニアにとって日課です。記録方法と使い方ですが、そこに注目している人はほとんどいません。私は最近、基本的に収集と使用の 2 つのステップを含むアイデアについて考えています。
1. コレクション
エラー収集については、各ブラウザに window.onerror というインターフェイスがあるため、非常に便利です。コードは次のとおりです。 🎜>
window.onerror = function(errorMessage, scriptURL, lineNumber) {
alert(errorMessage, scriptURL, lineNumber)
}
try/catch の e.stack などのスタック トレースも提供します (各ブラウザは異なります。eriwen /javascript を使用できます) -stacktrace 互換性ライブラリ) を使用して、次のコードを試してください:
try {
fn()
} catch(e) {
alert(e.stack)
}
したがって、これらを収集する方が便利ですはい、ここで注意すべき点は、window.addEventListener('error', callback, isBubble) を使用するときのコールバックの最初のパラメーターはイベントではなく、Error オブジェクトであるということです。この場合、便宜上、window.onerror を使用するのが良い選択ですが、ドット演算子を通じて監視されるイベントはオーバーロードされる可能性があり、このリスニング スクリプトは理論的にはすべての js の先頭に配置されるため、リスクを考慮する必要があります。
2.
を使用する 以前 Alipay を使用していたとき、オンラインの JS エラー レポートは電子メールに変換されてフロントエンド開発チームに送信され、全員が請求して解決していました。それは自分自身です。実際、これは良い選択であり、すぐに対応して修復するという最も基本的な問題も解決します。しかし、同じ間違いを避けるにはどうすればよいかという問題もあります。私の最初のアイデアは次のとおりです。同じページ上でエラーを記録する単位として URL を使用します。これにより、各エラーが解決された後に、記録されたエラー (ページ URL、ユーザー エージェント、スクリプト URL、エラー メッセージ、行番号など) の統一された解決が容易になります。ソリューションを 1 か所に記述し、それを見た人がコメントしたりポイントを追加したりできます。最終的にはナレッジ ベースとしてアーカイブされ、開発中や開発時にこれらのナレッジ ベースのコンテンツを使用するために便利な API を使用できます。同じページ window.onerror が発生すると、エラー メッセージが分析されてタイプが特定され、開発者はナレッジ ベースの特定のタグをサブスクライブできます。電子メールを自動的に受信します (もちろん、ファイルのコメントやマッピングなどに基づいて、より適切なペアリングを行うこともできます)。 なぜこれを行うのですか?主に次の問題を解決するため: 開発者が学ぶことができるナレッジ ベースを形成します。特に効率を向上させ、繰り返しのエラーや繰り返しの解決策を回避するための初心者向けツールを作成します。 3. 注意事項。
1. エラー メッセージが長くなる場合があり、保存されるエラーが少ない場合は、GET 送信を使用することを検討できます。通常、POST はすべてのデータをバックグラウンドに送信できます。 2. データをいつ送信するか? onerror がトリガーされたときにデータを送信することをお勧めします。最初にこのアイデアを思いついたとき、onbeforeonload 中に送信しようとしましたが、POST リクエストが開かれる前にブラウザによって中断されました。 3. データベースに保存するのに適したインデックスはどれですか? 一般に、ほとんどの Web サイトには URL の方が適しています。ただし、Baixing.com や Taobao などの UGC が多い Web サイトでは、URL を記録するために変更が必要になる場合があります。結局のところ、異なる投稿や異なる URL はすべて同じコードのセットを持っています。 Error をインデックスとして使用するのはどうですか?実際、どのような種類であっても、自分のニーズに応じて選択してください。 4. すべてのエラーを記録するかどうか。これも必要に応じて適切です。 Baidu.com にはあらゆる種類の厄介なエラー レポートがあり、Baidu/Google への広告外部リンクから送信されている可能性があります。 4. 結論
現在、収集ツール (sofish/stacktrace.js) と保存方法が初期実装されていますが、継続するかどうかは時間とさらなる検討を必要とします。私は最初にそれを送り、いくつかのレンガを投げて翡翠を引き寄せます。