JavaScript で書かれたフロントエンド アプリケーションの Sentry によるエラーの監視: パート 1

サービス 歩哨 で書かれたフロントエンド アプリケーションのバグをリモートで監視できます。 JavaScriptを.

JavaScript で書かれたフロントエンド アプリケーションの Sentry によるエラーの監視: パート 1

フロントエンド アプリケーションの問題を解決しようとしています JavaScriptを これらはユーザーのブラウザから発生しており、アクセスできないことが多いため、扱いが難しい場合があります。 しかし、 歩哨 リモートでバグを監視できるようになります。

それは この記事で説明したソリューションをダウンロードできます。

必要なものは何ですか

これらの例を使用する場合は、以下が必要になります。

  • Node.js: アプリケーションの一部ではない、機能が豊富な開発ツール。 最新の LTS バージョン (8.12.0) をダウンロードしました
  • 歩哨: Sentry サービスのアカウント (毎月最大 10 件のバグを無料で記録できます)、またはインストールされたローカル Sentry - https://github.com/getsentry/onpremise

サーバーへのインストール

Sentry On-Premise をサーバーにインストールするには、2 つの方法があります

  1. rpm をビルドしてインストールします - https://habr.com/ru/post/500632/

  2. 公式インストーラーを使用します。

    Установить на сервер docker и docker-compose
    git clone https://github.com/getsentry/onpremise.git
    ./install.sh

標準使用

開始するには、サービス Web サイトから新しいものを追加します 歩哨-アプリケーションのプロジェクト。 希望の言語を選択すると、対応するドキュメントが届きます。 私たちの場合、私たちが選んだのは、 JavaScriptを.

最初の例は標準的なものです JavaScriptを。 ここには XNUMX つのボタンがあります。 "こんにちは" (こんにちは)そして "エラー" (エラー)。

ボタンをクリックした後 "こんにちは"、画面が再起動し、ブロックされます 試します バグを検出して捕捉します。 バグが「捕捉」された後、エラー レポートが手動でサービスに送信されます。 歩哨.

「エラー」ボタンを使用すると、バグを簡単に検出できます。

バニラ/index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Vanilla</title>
</head>
<body>
  <button id="hello">Hello</button>
  <button id="error">Error</button>
  <div id="output"></div>
  <script src="https://browser.sentry-cdn.com/4.0.5/bundle.min.js" crossorigin="anonymous"></script>
  <script>
    (function () {
      'use strict';
      Sentry.init({ dsn: 'https://[email protected]/1289664' });
      var helloEl = document.getElementById('hello');
      var errorEl = document.getElementById('error');
      var outputEl = document.getElementById('output');
      helloEl.addEventListener('click', handleHelloClick);
      errorEl.addEventListener('click', handleErrorClick);
      function handleHelloClick() {
        outputEl.innerHTML = 'Hello World';
        try {
          throw new Error('Caught');
        } catch (err) {
          Sentry.captureException(err);
        }
      }
      function handleErrorClick() {
        throw new Error('Uncaught');
      }
    })();
  </script>
</body>
</html>

備考:

  • Sentry は CDN からインストールされ、グローバル変数として公開されます
  • 少し前に、JavaScript で Sentry を起動しました。

この例をテストするには、静的 Web サーバー プラットフォームを使用できます。 Node.js: httpサーバー。 ファイルが保存されているフォルダーに移動します index.htmlを、次の行を入力して (キャッシュを無効にするオプション)、ブラウザでアドレスを開きます。 http://localhost:8080.

捕らえられたバグの表示方法

まずボタンをクリックしてください "こんにちは".

JavaScript で書かれたフロントエンド アプリケーションの Sentry によるエラーの監視: パート 1

バグを発見したため、コールスタックにポップアップ表示されず、コンソールで監視されません。 ただし、お送りするのは 歩哨 手動でバグを報告すると、それに関するメッセージがアカウントに表示されます。

JavaScript で書かれたフロントエンド アプリケーションの Sentry によるエラーの監視: パート 1

備考:

  • どの行 (24) にバグが含まれているかを追跡できます。
  • さらに、パンくずリストには、エラーの原因となったブラウザーのアクションが表示されます。

捕らえられなかったバグの表示方法

ボタンをクリックする "エラー"。

JavaScript で書かれたフロントエンド アプリケーションの Sentry によるエラーの監視: パート 1

このバグによりコールスタックがバブルアップするため、コンソールにエラーメッセージが表示されます。 その後、Sentry は追加のアクションを行わずに自動的にバグを監視します。

JavaScript で書かれたフロントエンド アプリケーションの Sentry によるエラーの監視: パート 1

備考:

  • どの行 (30) でバグが失われているかがわかります。
  • パンくずリストがありません (理由はよくわかりません)

プロジェクトのセキュリティを確保する方法

どのページがプロジェクトにエラーを報告できるかを制御する方法に気づいたかもしれません 歩哨; 助けを借りて DSN 記録。 問題は、ページのソース コードを閲覧する人なら誰でもその入力を見ることができることです。

これを回避するには、プロジェクトにエラー レポートを送信できるドメインの数を制限する必要があります。 この例では、 ローカルホスト (ローカルホスト)。 このオプションは設定タブで構成されます 歩哨-プロジェクト、 Sentry プロジェクトの設定.

JavaScript で書かれたフロントエンド アプリケーションの Sentry によるエラーの監視: パート 1

リリース

使い方を考えたら 歩哨 アプリケーションのさまざまなバリエーションでは、エラーにバージョン番号をマークする何らかのメカニズムが必要になります。

結局のところ、私たちは修正したバグが再び現れることを望みませんし、修正したものが機能しなかったと考えます。 また、ユーザーがキャッシュされた古いバージョンのアプリケーションを起動した可能性もあります。

問題を解決するには、識別子を入力する必要があります 解放する 起動時の(バージョン) 歩哨.

バニラ/index.html

...
var RELEASE = '0.1.0';
Sentry.init({
  dsn: 'https://[email protected]/1289664',
  release: RELEASE,
});
...

この後、すべての新しいエラーは次のようにマークされます。 リリース (0.1.0)つまり、コードの正しいバージョンに関連付けられます。

JavaScript で書かれたフロントエンド アプリケーションの Sentry によるエラーの監視: パート 1

備考:

  • リリースを使用する簡単な方法を考え出しました
  • Sentry を使用するとさらに多くのことが可能になります 複合体 彼らの の使用と密接に関係しています GitHubの。 この機能により、特定の操作を実行する前にバグを追跡することができます。

PS 後半は長くなるので別記事にします。

PS Telegram チャット セントリー https://t.me/sentry_ru

PS これが投稿の翻訳であることを示すのを忘れていました https://codeburst.io/sentry-error-reporting-by-example-part-1-999b2df11556

出所: habr.com

コメントを追加します