【JavaScript】JavaScript でエラーが発生したらエラーをAPIに投げる

 Web サイト上で JavaScript のエラーが発生した時、エラーログに残るとうれしいです。しかしながらこういった時の JavaScript はブラウザ上で動いており、基本的にブラウザ上でエラーも完結します。そこでエラー発生時に自動でその内容を API に投げ、API の中でエラー内容を保存することを考えます。これは次のコードでできます。

<script>
/**
 * @see https://developer.mozilla.org/ja/docs/Web/API/Window/error_event
 * @param message
 * @param file
 * @param lineNo
 * @param colNo
 * @param error
 */
window.onerror = function (message, file, lineNo, colNo, error) {
    // エラーイベントが発生したらその内容をエラーログ保存APIに投げる
    fetch("/api/logging/error", {
        method: "POST",
        headers: {
            "Content-Type": "application/json", // fetch API で JSON 形式のリクエストを投げる
            "X-CSRF-TOKEN": "{{ csrf_token() }}",// Laravel 用
        },
        // 送信内容はエラー内容とどのブラウザで問題が起きるか
        body: JSON.stringify({
            message, file, lineNo, colNo, error,
            userAgent: window.navigator.userAgent,
        })
    }).catch(e => {
        // エラーログ保存でエラーが起きた場合はその旨をコンソールに出力
        console.error(e);
    });
}
</script>

 axios 等の外部パッケージ抜きで動く小さなコードです。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG