Mēs varam pārbaudīt Sentry ar ražošanas būvējumu, ievadot:
yarn build
un no būvēšanas mapes ievadiet:
npx http-server -c-1
Problēma, ar kuru mēs nekavējoties saskaramies, ir tā, ka Sentry kļūdu ieraksti attiecas uz rindu numuriem samazinātajā partijā; nav īpaši noderīgi.
Sentry pakalpojums to izskaidro, izvelkot samazinātās paketes avota kartes pēc kļūdas saņemšanas. Šajā gadījumā mēs darbojamies no localhost (nav pieejams Sentry pakalpojumam).
Risinājumi (avota kartes)
Šīs problēmas risinājums ir palaist lietojumprogrammu no publiska tīmekļa servera. Viena vienkārša atbildes poga, lai izmantotu pakalpojumu GitHub Pages (bezmaksas). Lietošanas darbības parasti ir šādas:
Kopējiet mapes saturu būvēt uz mapi dokumenti repozitorija saknes direktorijā.
Ieslēdz GitHub lapas repozitorijā (no GitHub), lai izmantotu dokumentu mapi meistars filiāles
Nospiediet izmaiņas uz GitHub
Piezīme: pēc tam, kad es sapratu, kas man jāizmanto izveidot-izveidot-lietotni mājas lapas funkcija, lai palaistu programmu. Tika pievienots failam package.json:
Labāka apstrāde ar neuzskaitītām kļūdām (renderēšana)
Kļūdu ierobežojumu ieviešana
JavaScript kļūda lietotāja saskarnes daļā nedrīkst sabojāt visu lietojumprogrammu. Lai atrisinātu šo problēmu React lietotājiem, React 16 ievieš jaunu koncepciju, ko sauc par "kļūdu robežām".
Kļūdu robežas ir React komponenti, kas uztver JavaScript kļūdas jebkurā vietā to pakārtoto komponentu kokā, reģistrē šīs kļūdas un renderē atkāpšanās lietotāja saskarni, nevis komponentu koku, kas avarēja. Kļūdu robežas uztver kļūdas renderēšanas laikā, dzīves cikla metodēs un visa zem tām esošā koka konstruktoros.
...
Jauna rīcība neatklātām kļūdām
Šīs izmaiņas ir nozīmīgas. Sākot ar React 16, kļūdas, kuras nenovēroja neviena kļūdu robeža, izraisīs visu React komponentu koka atvienošanu.
Svarīgs precizējums, kas pagāja kādu laiku, pirms es to sapratu iepriekš minētā darbība darbojas tikai ar kļūdām, kas rodas renderēšanas metodē (vai, visticamāk, jebkurā dzīves cikla metodē). Piemēram, kļūdu robežu izmantošana mūsu pogai nenāktu par labu kļūda; šī kļūda bija klikšķu apstrādātājā.
Izveidosim renderēšanas kļūdas piemēru un pēc tam izmantosim kļūdu robežas, lai graciozāk risinātu kļūdu.
Nospiežot pogu, Reaģēt tiks parādīts karogs.salauzts.viltus, kas rada kļūdu
Bez kļūdas robežas tiks atmontēts viss komponentu koks
Pēc tam mēs rakstām kļūdas robežas kodu (izmanto jauno dzīves cikla metodi komponentsDidCatch); tas būtībā ir piemērs, kas sniegts Dena Abramova rakstā:
react-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;
}
}