Мы можам пратэставаць Sentry з вытворчай зборкай, увёўшы:
yarn build
і з build тэчкі увядзіце:
npx http-server -c-1
Праблема, з якой мы неадкладна сутыкнемся, складаецца ў тым, што запісы пра памылку Sentry спасылаюцца на нумары радкоў у паменшаным пакеце; не вельмі карысна.
Служба Sentry тлумачыць гэта, выцягваючы зыходныя карты для паменшанага пакета пасля атрымання памылкі. У гэтым выпадку мы ўцякаем ад localhost (недаступнага службай Sentry).
Рашэнні (Зыходныя Карты)
Вырашэнне гэтай праблемы зводзіцца да запуску прыкладання з агульнадаступнага вэб-сервера. Адна простая кнопка адказу на яго, каб выкарыстоўваць сэрвіс GitHub Pages (бясплатна). Крокі для выкарыстання звычайна наступныя:
Скапіюйце змесціва тэчкі будаваць у тэчку Дакументы у каранёвым каталогу рэпазітара.
уключыце Старонкі GitHub у рэпазітары (з GitHub), каб выкарыстоўваць тэчку docs у майстар галіны
Перанясіце змены на GitHub
Заўвага: пасля таго, як я зразумеў, што мне трэба выкарыстоўваць create-create-app функцыя хатняй старонкі для запуску прыкладання. Зводзілася да дадання наступнага да package.json:
Гэтая справаздача пра памылку не можа быць больш зразумелай, BRAVO.
Ілюстрацыя Няўлічаных Памылак
Аналагічна, давайце пройдзем праз націск кнопкі памылка.
З памылкай, якая з'яўляецца наступным чынам:
Лепшая апрацоўка няўлічаных памылак (рэндэрынг)
Увядзенне Меж Памылак
Памылка JavaScript у частцы карыстацкага інтэрфейсу не павінна парушаць працу ўсяго прыкладання. Каб вырашыць гэтую праблему для карыстачоў React, React 16 уводзіць новае паняцце "мяжы памылак".
Межы памылак – гэта кампаненты React, якія ловяць памылкі JavaScript у любым месцы свайго даччынага дрэва кампанентаў, рэгіструюць гэтыя памылкі і адлюстроўваюць рэзервовы карыстацкі інтэрфейс замест дрэва кампанентаў, якое разбілася. Межы памылак улоўліваюць памылкі падчас рэндэрынгу, у метадах жыццёвага цыклу і ў канструктарах усяго дрэва пад імі.
...
Новыя паводзіны для нявыяўленых памылак
Гэтая змена мае важнае значэнне. Пачынаючы з React 16, памылкі, якія не былі злоўлены якой-небудзь мяжой памылак, прывядуць да размантавання ўсяго дрэва кампанентаў React.
Важнае ўдакладненне, якое заняло ў мяне некаторы час, перш чым я зразумеў гэта, палягае ў тым, што вышэйзгаданыя паводзіны працуюць толькі з памылкамі, якія генерыруюцца ў метадзе рэндэрынгу (ці, што больш верагодна, у любым з метадаў жыццёвага цыклу). Напрыклад, выкарыстанне межаў памылак не прынесла б ніякай карысці з нашай кнопкай. памылка; гэтая памылка была ў апрацоўшчыку пстрычкі.
Давайце створым прыклад памылкі візуалізацыі, а затым выкарыстоўваем межы памылак для больш хупавай апрацоўкі памылкі.
Пры націску кнопкі, Рэагаваць будзе адлюстроўвацца flag.busted.bogus, якая спараджае памылку
Без мяжы памылкі ўсё дрэва кампанентаў будзе размантавана
Затым мы пішам наш код мяжы памылкі (выкарыстоўвае новы метад жыццёвага цыклу componentDidCatch); гэта, па сутнасці, прыклад, прыведзены ў артыкуле Дэна Абрамава:
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;
}
}