Kita bisa nguji Sentry kanthi mbangun produksi kanthi ngetik:
yarn build
lan saka folder mbangun ketik:
npx http-server -c-1
Masalah sing langsung kita lakoni yaiku cathetan kesalahan Sentry nuduhake nomer baris ing batch minified; ora banget migunani.
Layanan Sentry nerangake iki kanthi narik peta sumber kanggo paket sing dikurangi sawise nampa kesalahan. Ing kasus iki, kita mlaku saka localhost (ora bisa diakses dening layanan Sentry).
Solusi (Peta Sumber)
Solusi kanggo masalah iki yaiku mbukak aplikasi saka server web umum. Siji tombol balesan sing gampang kanggo nggunakake layanan GitHub Pages (gratis). Langkah-langkah sing digunakake biasane kaya ing ngisor iki:
Salin isi folder kasebut mbangun menyang folder docs ing direktori root saka repositori.
Nguripake Kaca GitHub ing repositori (saka GitHub) kanggo nggunakake folder docs ing Master cabang
Tekan owah-owahan menyang GitHub
komentar: sawise aku ngerti apa sing kudu digunakake nggawe-nggawe-app fungsi kaca ngarep kanggo mbukak aplikasi. Teka mudhun kanggo nambah ing ngisor iki kanggo package.json:
Penanganan sing luwih apik kanggo kesalahan sing ora dikira (rendering)
Pambuka Watesan kesalahan
Kesalahan JavaScript ing bagean antarmuka panganggo ngirim ora ngrusak kabeh aplikasi. Kanggo ngatasi masalah iki kanggo pangguna React, React 16 ngenalake konsep anyar sing diarani "wates kesalahan".
Watesan kesalahan yaiku komponen React sing nyekel kesalahan JavaScript ing endi wae ing wit komponen anak, nyathet kesalahan kasebut, lan nggawe UI mundur tinimbang wit komponen sing nabrak. Watesan kesalahan nyekel kesalahan sajrone rendering, ing cara siklus urip, lan ing konstruktor kabeh wit ing ngisor iki.
...
Prilaku anyar kanggo kesalahan sing ora dideteksi
Owah-owahan iki penting. Ing React 16, kesalahan sing ora kejiret dening wates kesalahan bakal nyebabake kabeh wit komponen React ora dipasang.
Klarifikasi penting sing njupuk sawetara wektu sadurunge aku ngerti iki prilaku ing ndhuwur mung bisa digunakake karo kesalahan sing dibuwang ing metode render (utawa luwih akeh ing salah sawijining metode siklus urip). Contone, nggunakake wates kesalahan ora bakal migunani kanggo tombol kita Kesalahan; kesalahan iki ana ing handler klik.
Ayo nggawe kesalahan rendering conto banjur gunakake wates kesalahan kanggo nangani kesalahan kanthi luwih apik.
Nalika sampeyan mencet tombol, nanggepi bakal ditampilake flag.busted.bogus, sing nggawe kesalahan
Tanpa wates kesalahan, kabeh wit komponen bakal dicopot
Banjur kita nulis kode wates kesalahan (nggunakake metode siklus urip anyar componentDidCatch); Iki minangka conto sing diwenehake ing artikel Dan Abramov:
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;
}
}