Kļūdu pārraudzība ar Sentry priekšgala lietojumprogrammās, kas rakstītas JavaScript: 1. daļa

Apkalpošana Sargkareivis ļauj attālināti pārraudzīt kļūdas rakstītajās priekšgala lietojumprogrammās JavaScript.

Kļūdu pārraudzība ar Sentry priekšgala lietojumprogrammās, kas rakstītas JavaScript: 1. daļa

Mēģina novērst problēmas ar priekšgala lietojumprogrammām JavaScript var būt sarežģīti, jo to izcelsme ir lietotāja pārlūkprogrammā, kurai jums bieži nav piekļuves. tomēr Sargkareivis ļauj attālināti uzraudzīt kļūdas.

Šeit Varat lejupielādēt šajā rakstā apspriestos risinājumus.

Kas vajadzīgs

Ja vēlaties izmantot šos piemērus, jums būs nepieciešams:

  • Node.js: ar funkcijām bagāts izstrādes rīks, kas neietilpst lietojumprogrammā. Mēs lejupielādējām jaunāko LTS versiju (8.12.0)
  • Sargkareivis: vai nu konts pakalpojumā Sentry (jūs varat bez maksas ierakstīt līdz 10 tūkstošiem kļūdu mēnesī) vai instalēts vietējais Sentry - https://github.com/getsentry/onpremise

Instalēšana jūsu serverī

Lai savā serverī instalētu Sentry On-Premise, varat rīkoties divos veidos

  1. Veidojiet apgriezienus minūtē un uzstādiet tos - https://habr.com/ru/post/500632/

  2. Izmantojiet oficiālo instalētāju:

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

Standarta lietošana

Lai sāktu, pakalpojuma vietnē pievienojiet jaunu Sargkareivis-projekts pieteikumam. Pēc vajadzīgās valodas izvēles saņemsiet atbilstošo dokumentāciju. Mūsu gadījumā mēs izvēlējāmies JavaScript.

Pirmais piemērs ir standarta JavaScript. Šeit ir divas pogas: "Sveiki" (Sveiki) un "Kļūda" (Kļūda).

Pēc tam, kad esat noklikšķinājis uz pogas "Sveiki", ekrāns tiks atsāknēts un bloķēs mēģināt atklās un noķers kļūdu. Pēc kļūdas “noķeršanas” kļūdas ziņojums tiek manuāli nosūtīts dienestam Sargkareivis.

Poga “Kļūda” ļauj viegli noteikt kļūdu.

vaniļas/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>

Piezīmes:

  • Sentry tiek instalēts no CDN un tiek parādīts kā globāls mainīgais
  • Nedaudz agrāk mēs palaižām Sentry savā JavaScript

Lai pārbaudītu šo piemēru, mēs varam izmantot statisku tīmekļa servera platformu Node.js: http serveris. Dodieties uz mapi, kurā tiek saglabāts fails index.html, un ievadiet (opcija ar atspējošanu kešatmiņā) šo rindiņu, lai pārlūkprogrammā atvērtu adresi http://localhost:8080.

Kā tiek parādītas noķertās kļūdas

Vispirms noklikšķiniet uz pogas "Sveiki".

Kļūdu pārraudzība ar Sentry priekšgala lietojumprogrammās, kas rakstītas JavaScript: 1. daļa

Mēs noķērām kļūdu, tāpēc tā netiks parādīta zvanu steksā un tāpēc konsolē netiek pārraudzīta. Tomēr, tā kā mēs nosūtām uz Sargkareivis ziņojiet par kļūdu manuāli, mēs redzēsim ziņojumu par to jūsu kontā.

Kļūdu pārraudzība ar Sentry priekšgala lietojumprogrammās, kas rakstītas JavaScript: 1. daļa

Piezīmes:

  • Mēs varam izsekot, kurā rindā (24) ir kļūda
  • Turklāt hierarhiskās navigācijas taka parāda pārlūkprogrammas darbības, kas izraisīja kļūdu.

Kā tiek parādītas nenotvertās kļūdas

Noklikšķinot uz pogas "Kļūda".

Kļūdu pārraudzība ar Sentry priekšgala lietojumprogrammās, kas rakstītas JavaScript: 1. daļa

Kļūda izsauc zvanu steku, un tādējādi konsolē tiek parādīts kļūdas ziņojums. Pēc tam Sentry automātiski pārrauga kļūdu bez papildu darbībām.

Kļūdu pārraudzība ar Sentry priekšgala lietojumprogrammās, kas rakstītas JavaScript: 1. daļa

Piezīmes:

  • Mēs varam redzēt, kurā rindā (30) kļūda ir pazaudēta
  • Nav rīvmaizes takas (es īsti nesaprotu, kāpēc)

Kā nodrošināt projekta drošību

Iespējams, esat ievērojuši veidu, kā mēs kontrolējam, kuras lapas var ziņot par mūsu projekta kļūdām Sargkareivis; ar palīdzību dsn ieraksti. Problēma ir tā, ka ievadīto informāciju var redzēt ikviens, kurš skata jūsu lapas avota kodu.

Lai no tā izvairītos, mums jāierobežo to domēnu skaits, kas var iesniegt mūsu projektam kļūdu ziņojumus. Šajā piemērā mēs izmantojām localhost (локальный хост). Данная опция настраивается во вкладке настроек Sargkareivis- projekts, Sentry projekta iestatījums.

Kļūdu pārraudzība ar Sentry priekšgala lietojumprogrammās, kas rakstītas JavaScript: 1. daļa

Izlaidumi

Ja jūs domājat par to, kā izmantot Sargkareivis dažādās mūsu lietojumprogrammas variācijās, tad mums ir nepieciešams kaut kāds mehānisms, kas kļūdas atzīmēs ar versijas numuru.

Galu galā mēs nevēlamies, lai kļūda, kuru izlabojām, atkal parādās, un mēs domājam, ka labotais nedarbojās. Iespējams, ka lietotājs ir palaidis vecāku, kešatmiņā saglabātu lietojumprogrammas versiju.

Lai atrisinātu problēmu, jums jāievada identifikators atbrīvot (versijas) startēšanas laikā Sargkareivis.

vaniļas/index.html

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

Pēc tam visas jaunās kļūdas tiks atzīmētas kā laidiens (0.1.0), tas ir, tie tiks piesaistīti pareizajai koda versijai.

Kļūdu pārraudzība ar Sentry priekšgala lietojumprogrammās, kas rakstītas JavaScript: 1. daļa

Piezīmes:

  • Mēs esam izdomājuši vienkāršu veidu, kā izmantot laidienus
  • Sentry ļauj izmantot vairāk komplekss viņu izmantošana, kas ir cieši saistīts ar GitHub. Šī funkcija ļauj izsekot kļūdas pirms noteiktu darbību veikšanas.

PS Otrā daļa ir garāka, tāpēc tā būs atsevišķā ierakstā.

PS Telegram tērzēšana Sentry https://t.me/sentry_ru

PS Es aizmirsu norādīt, ka šis ir ieraksta tulkojums https://codeburst.io/sentry-error-reporting-by-example-part-1-999b2df11556

Avots: www.habr.com

Pievieno komentāru