Sentry môžeme otestovať s produkčnou zostavou zadaním:
yarn build
a z priečinka build zadajte:
npx http-server -c-1
Problém, na ktorý okamžite narazíme, je ten, že záznamy chýb Sentry odkazujú na čísla riadkov v minifikovanej dávke; nie veľmi užitočné.
Služba Sentry to vysvetľuje tým, že po prijatí chyby stiahne zdrojové mapy pre zmenšený paket. V tomto prípade bežíme z localhost (nie je prístupný službou Sentry).
Riešenia (zdrojové mapy)
Riešením tohto problému je spustenie aplikácie z verejného webového servera. Jedno jednoduché tlačidlo odpovede na používanie služby GitHub Pages (zadarmo). Kroky na použitie sú zvyčajne nasledovné:
Skopírujte obsah priečinka vybudovať do priečinka dokumenty v koreňovom adresári úložiska.
Zapnite Stránky GitHub v úložisku (z GitHubu), aby ste mohli použiť priečinok docs majster pobočky
Preneste zmeny na GitHub
Poznámka: potom, čo som zistil, čo potrebujem použiť vytvoriť-vytvoriť-aplikáciu funkciu domovskej stránky na spustenie aplikácie. Do súboru package.json sme pridali nasledujúce položky:
Toto hlásenie o chybe nemôže byť jasnejšie, BRAVO.
Ilustrácia Unaccounted for Errors
Podobne prejdeme kliknutím na tlačidlo Chyba.
S chybou, ktorá sa zobrazuje takto:
Lepšie spracovanie nezapočítaných chýb (vykresľovanie)
Zavedenie limitov chýb
Chyba JavaScript v časti používateľského rozhrania by nemala poškodiť celú aplikáciu. Na vyriešenie tohto problému pre používateľov Reactu, React 16 predstavuje nový koncept s názvom „chybové hranice“.
Hranice chýb sú komponenty React, ktoré zachytávajú chyby JavaScriptu kdekoľvek v strome svojich podriadených komponentov, zaznamenávajú tieto chyby a vykresľujú záložné používateľské rozhranie namiesto stromu komponentov, ktorý zlyhal. Hranice chýb zachytávajú chyby počas vykresľovania, v metódach životného cyklu a v konštruktoroch celého stromu pod nimi.
...
Nové správanie pre nezistené chyby
Táto zmena je významná. Od React 16 budú mať chyby, ktoré neboli zachytené žiadnou chybovou hranicou, za následok odpojenie celého stromu komponentov React.
Dôležité objasnenie, ktoré mi chvíľu trvalo, kým som si to uvedomil, je to Vyššie uvedené správanie funguje iba s chybami vyvolanými v metóde vykresľovania (alebo pravdepodobnejšie v ktorejkoľvek z metód životného cyklu). Napríklad použitie hraníc chýb by s naším tlačidlom neprinieslo nič dobré Chyba; táto chyba bola v obslužnom programe kliknutia.
Vytvorme príklad chyby vykresľovania a potom použite hranice chýb na elegantnejšie spracovanie chyby.
Keď stlačíte tlačidlo, Reagovať sa zobrazí vlajka.prepadnutá.falošná, čo generuje chybu
Bez hranice chyby sa odpojí celý strom komponentov
Potom napíšeme náš kód hranice chýb (používa novú metódu životného cyklu komponentDidCatch); toto je v podstate príklad uvedený v článku Dana Abramova:
respond-app/src/ErrorBoundary.js
import React, { Component } from 'react';
import * as Sentry from '@sentry/browser';
export default class ErrorBoundary extends Component {
constructor(props) {
super(props);
this.state = { hasError: false };
}
componentDidCatch(err, info) {
this.setState({ hasError: true });
Sentry.captureException(err);
}
render() {
if (this.state.hasError) {
return <h1>Something went wrong.</h1>;
}
return this.props.children;
}
}