Kita dapat menguji Sentry dengan build produksi dengan memasukkan:
yarn build
dan dari folder build masukkan:
npx http-server -c-1
Masalah yang segera kami hadapi adalah catatan kesalahan Sentry mengacu pada nomor baris dalam kumpulan yang diperkecil; tidak terlalu berguna.
Layanan Sentry menjelaskan hal ini dengan menarik peta sumber untuk paket yang dikurangi setelah menerima kesalahan. Dalam hal ini kami menjalankan dari localhost (tidak dapat diakses oleh layanan Sentry).
Solusi (Sumber Peta)
Solusi untuk masalah ini adalah dengan menjalankan aplikasi dari server web publik. Satu tombol balasan sederhana untuk menggunakan layanan GitHub Pages (gratis). Langkah-langkah penggunaannya biasanya sebagai berikut:
Salin isi folder tersebut membangun ke folder docs di direktori root repositori.
Nyalakan Halaman GitHub di repositori (dari GitHub) untuk menggunakan folder docs di menguasai cabang
Dorong perubahan ke GitHub
Catatan: setelah saya menemukan apa yang perlu saya gunakan buat-buat-aplikasi halaman beranda berfungsi untuk meluncurkan aplikasi. Saya mulai menambahkan yang berikut ini ke package.json:
Demikian pula, mari kita melalui klik tombol error.
Dengan error yang muncul seperti ini:
Penanganan kesalahan yang belum terhitung (rendering) dengan lebih baik
Pengenalan Batas Kesalahan
Kesalahan JavaScript di bagian antarmuka pengguna tidak akan merusak keseluruhan aplikasi. Untuk mengatasi masalah ini bagi pengguna React, React 16 memperkenalkan konsep baru yang disebut "batas kesalahan".
Batasan kesalahan adalah komponen React yang menangkap kesalahan JavaScript di mana pun dalam pohon komponen turunannya, mencatat kesalahan tersebut, dan merender UI fallback alih-alih pohon komponen yang mogok. Batas kesalahan menangkap kesalahan selama rendering, dalam metode siklus hidup, dan di konstruktor seluruh pohon di bawahnya.
...
Perilaku baru untuk kesalahan yang tidak terdeteksi
Perubahan ini penting. Pada React 16, kesalahan yang tidak tertangkap oleh batasan kesalahan apa pun akan mengakibatkan seluruh pohon komponen React dilepas.
Klarifikasi penting yang memerlukan waktu beberapa saat sebelum saya menyadari hal ini adalah itu perilaku di atas hanya berfungsi dengan kesalahan yang terjadi dalam metode render (atau lebih mungkin terjadi pada metode siklus hidup mana pun). Misalnya, menggunakan batasan kesalahan tidak akan ada gunanya dengan tombol kita error; kesalahan ini ada di penangan klik.
Mari kita buat contoh kesalahan rendering dan kemudian gunakan batas kesalahan untuk menangani kesalahan dengan lebih baik.
Saat Anda menekan tombol, Bereaksi akan ditampilkan bendera.rusak.bogus, yang menghasilkan kesalahan
Tanpa batas kesalahan, seluruh pohon komponen akan dilepas
Kemudian kami menulis kode batas kesalahan kami (menggunakan metode siklus hidup baru komponenDidCatch); ini pada dasarnya adalah contoh yang diberikan dalam artikel Dan Abramov:
reaksi-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;
}
}