Sentry můžeme otestovat s produkčním sestavením zadáním:
yarn build
a ze složky sestavení zadejte:
npx http-server -c-1
Problém, na který jsme okamžitě narazili, je ten, že záznamy chyb Sentry odkazují na čísla řádků v minifikované dávce; nepříliš užitečné.
Služba Sentry to vysvětluje tím, že po obdržení chyby stáhne zdrojové mapy pro zmenšený paket. V tomto případě běžíme z localhost (není přístupný službou Sentry).
Řešení (zdrojové mapy)
Řešením tohoto problému je spuštění aplikace z veřejného webového serveru. Jedno jednoduché tlačítko pro odpověď k použití služby GitHub Pages (zdarma). Kroky k použití jsou obvykle následující:
Zkopírujte obsah složky stavět do složky dokumenty v kořenovém adresáři úložiště.
Zapnout Stránky GitHub v úložišti (z GitHubu), abyste mohli použít složku docs mistr větví
Odeslat změny na GitHub
Poznámka: poté, co jsem zjistil, co potřebuji použít vytvořit-vytvořit-aplikaci funkci domovské stránky pro spuštění aplikace. Došlo k přidání následujícího do package.json:
Lepší zpracování nezapočítaných chyb (vykreslování)
Zavedení limitů chyb
Chyba JavaScriptu v části uživatelského rozhraní by neměla narušit celou aplikaci. K vyřešení tohoto problému pro uživatele Reactu zavádí React 16 nový koncept nazvaný „chybové hranice“.
Hranice chyb jsou komponenty React, které zachycují chyby JavaScriptu kdekoli ve stromu jejich podřízených komponent, protokolují tyto chyby a vykreslují záložní uživatelské rozhraní namísto stromu komponent, který se zhroutil. Hranice chyb zachycují chyby během vykreslování, v metodách životního cyklu a v konstruktorech celého stromu pod nimi.
...
Nové chování pro neodhalené chyby
Tato změna je významná. Od React 16 budou mít chyby, které nebyly zachyceny žádnou chybovou hranicí, k odpojení celého stromu komponenty React.
Důležité vysvětlení, které mi chvíli trvalo, než jsem si to uvědomil výše uvedené chování funguje pouze s chybami vyvolanými v metodě renderování (nebo pravděpodobněji v kterékoli z metod životního cyklu). Například použití hranic chyb by s naším tlačítkem nepomohlo Chyba; tato chyba byla v obslužné rutině kliknutí.
Vytvořme příklad chyby vykreslování a poté použijte hranice chyb, abychom chybu zvládli elegantněji.
Když stisknete tlačítko, REACT se zobrazí vlajka.prošlá.falešná, což generuje chybu
Bez hranice chyby bude odpojen celý strom komponenty
Poté napíšeme náš kód chybové hranice (používá novou metodu životního cyklu komponentDidCatch); toto je v podstatě příklad uvedený v článku Dana Abramova:
reagovat-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;
}
}