Praćenje pogrešaka sa Sentry u Front-End aplikacijama napisanim u JavaScriptu: 1. dio

Usluga Dežurni omogućuje daljinsko praćenje grešaka u prednjim aplikacijama napisanim u JavaScript.

Praćenje pogrešaka sa Sentry u Front-End aplikacijama napisanim u JavaScriptu: 1. dio

Pokušavam riješiti probleme u prednjim aplikacijama na JavaScript može biti nezgodno jer potječu iz preglednika korisnika, kojemu često nemate pristup. Međutim, Dežurni omogućuje daljinsko praćenje grešaka.

Ovdje Možete preuzeti rješenja o kojima se govori u ovom članku.

Što je potrebno

Ako želite koristiti ove primjere, trebat će vam:

  • Node.js: Razvojni alat bogat značajkama koji nije dio aplikacije. Preuzeli smo najnoviju LTS verziju (8.12.0)
  • Dežurni: Ili račun na usluzi Sentry (možete snimiti do 10 tisuća bugova mjesečno besplatno) ili instalirani lokalni Sentry - https://github.com/getsentry/onpremise

Instalacija na vašem poslužitelju

Da biste instalirali Sentry On-Premise na svoj poslužitelj, možete ići na 2 načina

  1. Izgradite rpm i instalirajte ih - https://habr.com/ru/post/500632/

  2. Koristite službeni instalacijski program:

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

Standardna upotreba

Za početak dodajte novi s web stranice usluge Dežurni-projekt za prijavu. Nakon odabira željenog jezika, dobit ćete odgovarajuću dokumentaciju. U našem slučaju mi ​​smo izabrali JavaScript.

Prvi primjer je standardni JavaScript. Ovdje postoje dva gumba: "Zdravo" (Zdravo) i "Pogreška" (Pogreška).

Nakon što kliknete gumb "Zdravo", zaslon će se ponovno pokrenuti i blokirati pokušati otkrit će i uhvatiti grešku. Nakon što je bug "uhvaćen", izvješće o pogrešci se ručno šalje servisu Dežurni.

Gumb "Pogreška" omogućuje vam jednostavno otkrivanje greške.

vanilija/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>

Bilješke:

  • Sentry je instaliran s CDN-a i izložen je kao globalna varijabla
  • Nešto ranije pokrenuli smo Sentry u našem JavaScriptu

Za testiranje ovog primjera možemo koristiti statičnu platformu web poslužitelja Node.js: http poslužitelj. Idite u mapu u kojoj je pohranjena datoteka index.html, i unesite (opcija s onemogućavanjem predmemoriranja) sljedeći redak za otvaranje adrese u pregledniku http://localhost:8080.

Kako se prikazuju uhvaćene greške

Prvo kliknite gumb "Zdravo".

Praćenje pogrešaka sa Sentry u Front-End aplikacijama napisanim u JavaScriptu: 1. dio

Uhvatili smo grešku, pa neće iskočiti na hrpu poziva i stoga se ne prati u konzoli. Međutim, budući da šaljemo na Dežurni prijavite bug ručno, vidjet ćemo poruku o tome na vašem računu.

Praćenje pogrešaka sa Sentry u Front-End aplikacijama napisanim u JavaScriptu: 1. dio

Bilješke:

  • Možemo pratiti koji redak (24) sadrži grešku
  • Osim toga, trag puta prikazuje radnje preglednika koje su dovele do pogreške.

Kako se prikazuju neuhvaćene greške

Klikom na gumb "Pogreška".

Praćenje pogrešaka sa Sentry u Front-End aplikacijama napisanim u JavaScriptu: 1. dio

Bug se diže u hrpu poziva i stoga se na konzoli prikazuje poruka o pogrešci. Nakon toga, Sentry automatski prati bug, bez ikakvih dodatnih radnji.

Praćenje pogrešaka sa Sentry u Front-End aplikacijama napisanim u JavaScriptu: 1. dio

Bilješke:

  • Možemo vidjeti u kojem je retku (30) greška izgubljena
  • Ne postoji put kroz put (nije mi jasno zašto)

Kako osigurati sigurnost projekta

Možda ste primijetili način na koji kontroliramo koje stranice mogu prijaviti pogreške našem projektu Dežurni; uz pomoć DSN zapisa. Problem je u tome što unos može vidjeti svatko tko pogleda izvorni kod vaše stranice.

Kako bismo to izbjegli, moramo ograničiti broj domena koje mogu slati izvješća o pogreškama našem projektu. U ovom smo primjeru koristili localhost (lokalni domaćin). Ova je opcija konfigurirana u kartici postavki Dežurni-projekt, Postavka projekta Sentry.

Praćenje pogrešaka sa Sentry u Front-End aplikacijama napisanim u JavaScriptu: 1. dio

Izdanja

Ako razmišljate o tome kako koristiti Dežurni u različitim varijantama naše aplikacije, tada trebamo neku vrstu mehanizma koji će označavati pogreške brojem verzije.

Uostalom, ne želimo da se greška koju smo popravili ponovno pojavi i mislimo da ono što smo popravili nije funkcioniralo. Također može biti da je korisnik pokrenuo stariju, predmemoriranu verziju aplikacije.

Da biste riješili problem, morate unijeti identifikator puštanje (verzije) pri pokretanju Dežurni.

vanilija/index.html

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

Nakon toga, sve nove pogreške bit će označene kao izdanje (0.1.0), odnosno bit će vezani uz ispravnu verziju koda.

Praćenje pogrešaka sa Sentry u Front-End aplikacijama napisanim u JavaScriptu: 1. dio

Bilješke:

  • Smislili smo jednostavan način korištenja izdanja
  • Sentry vam omogućuje da koristite više kompleks njihov korištenje, koji je usko povezan s GitHub. Ova funkcija omogućuje praćenje grešaka prije izvođenja određenih operacija.

PS Drugi dio je duži pa će biti u posebnom postu.

PS Telegram chat Sentry https://t.me/sentry_ru

PS Zaboravio sam naznačiti da je ovo prijevod posta https://codeburst.io/sentry-error-reporting-by-example-part-1-999b2df11556

Izvor: www.habr.com

Dodajte komentar