
TĂ€na rÀÀgin teile veaparanduse jĂ€lgimisest reaalajas Reacti rakenduses. Kasutajaliidese rakendust tavaliselt ei kasutata veaprobleemide jĂ€lgimiseks. Paljud ettevĂ”tted lĂŒkkavad veaparanduse jĂ€lgimise pigem edasi, kuni nad jĂ”uavad dokumentatsiooni, testimise ja muu juurde. Kuid kui saate oma toodet paremaks muuta, siis tehke seda kindlasti!
1. Miks vajate Sentryd?
Oletan, et olete huvitatud veaparanduse jÀlgimisest tootmisprotsessi kÀigus.
Kas arvate, et seda on liiga vÀhe?
HĂ€sti, vaatame ĂŒksikasju.
Peamised pÔhjused Sentry kasutamiseks arendajatele:
- VĂ€hendab riske, kui juurutatakse vigadega koodi.
- Aitab QA-l koodi testida.
- Saada kiireid teateid probleemidest.
- VÔimalus kiiresti vigu parandada.
- Lihtne vigade kuvamine haldashjÀlgimisliideses.
- Vigade sorteerimine kasutaja/brauseri segmentide kaupa.
Peamised pÔhjused CEO/Projektijuhi jaoks.
- Rahaliste sÀÀstude saavutamine (Sentry saab paigaldada teie serveritesse).
- Kasutajate tagasiside kogumine.
- Reaalajas mÔistmine, mis teie projektiga valesti on.
- Arusaamine probleemide arvust, millega inimesed teie rakenduses kokku puutuvad
- Aitamine leida kohti, kus teie arendajad eksisid
Ma arvan, et arendajad oleksid sellest artiklist esmajÀrjekorras huvitatud. Samuti vÔite seda pÔhjuseid kasutada, et veenda juhtkonda Sentry integreerimisel.
Olge viimase punkti suhtes ettevaatlik, kui tegemist on Àriga.
Kas olete juba huvitatud?

Mis on Sentry?
Sentry on avatud lĂ€htekoodiga veateavitusrakendus, mis aitab arendajatel jĂ€lgida ja reaalajas parandada kokkuvarisemisi. Ărge unustage, et rakendus aitab suurendada tĂ”husust ja parandada kasutaja kasutamist. Sentry toetab JavaScripti, Node'i, Pythonit, PHP-d, Ruby't, Java't ja muid programmeerimiskeeli.

2. Logige sisse ja looge projekt
- Avage oma Sentry konto. VÔib-olla peate sisse logima. (Pange tÀhele, et Sentryt saab installida teie serveritesse)
- JĂ€rgmine samm on projekti loomine
- Valige oma keel nimekirjast. (Me kavatseme valida Reacti. KlÔpsake "Loo projekt")

Seadistage oma rakendus. Allpool on vÀlja toodud pÔhijuhend, kuidas integreerida Sentry konteinerisse:
import * as Sentry from '@sentry/browser';
// Sentry.init({
// dsn: "<https:>"
// });
// peaks pidi oleks kutsutud enne, kui seda siin kasutama asute
// ideaalne oleks isegi enne teie React rakenduse renderdamist
class ExampleBoundary extends Component {
constructor(props) {
super(props);
this.state = { error: null };
}
componentDidCatch(error, errorInfo) {
this.setState({ error });
Sentry.withScope(scope => {
Object.keys(errorInfo).forEach(key => {
scope.setExtra(key, errorInfo[key]);
});
Sentry.captureException(error);
});
}
render() {
if (this.state.error) {
//render fallback UI
return (
<a onclick="{()" > Sentry.showReportDialog()}>Raporteeri tagasisidet</a>
);
} else {
//kui viga pole, renderda lapsed muutmata
return this.props.children;
}
}
}Sentry-l on kasulik Meistri juhend, mis aitab teil mÔista, mida jÀrgmine teha. Saate jÀrgneda jÀrgmistele sammudele. Soovin nÀidata, kuidas luua esimest veateadet. SuurepÀrane, oleme projekti loonud! Liigume jÀrgmise sammu juurde.
3. Reacti ja Sentry integreerimine
Peate installima npm paketi oma projekti.
npm i @sentry/browserInitsialiseerige Sentry oma konteineris:
Sentry.init({
// dsn: #dsnUrl,
});DSN leiate Projects -> Settings -> Client Keys. Saate kliendi vÔtmed otsinguribalt.

componentDidCatch(error, errorInfo) {
Sentry.withScope(scope => {
Object.keys(errorInfo).forEach(key => {
scope.setExtra(key, errorInfo[key]);
});
Sentry.captureException(error);
});
}4. Esimese vea jÀlgimine
NĂ€iteks kasutasin lihtsat muusika rakendust, mis kasutab Deezeri API-t. Saate seda nĂ€ha . Peame looma vea. Ăks viis selleks on pöörduda "undefined" omaduse poole.
Me peame looma nupu, mis kutsub esile console.log koos user.email. PÀrast seda toimingut peaksime saama veateate: Uncaught TypeError (ei saa lugeda omadust undefined'ist) email) kasutaja objekti puudumise tÔttu. Samuti saate kasutada JavaScripti erandit.
Kogu konteiner nÀeb vÀlja jÀrgmine:
import React, { Component } from "react";
import { connect } from "react-redux";
import { Input, List, Skeleton, Avatar } from "antd";
import * as Sentry from "@sentry/browser";
import getList from "../store/actions/getList";
const Search = Input.Search;
const mapState = state => ({
list: state.root.list,
loading: state.root.loading
});
const mapDispatch = {
getList
};
class Container extends Component {
constructor(props) {
super(props);
Sentry.init({
dsn: "https://fc0edcf6927a4397855797a033f04085@sentry.io/1417586",
});
}
componentDidCatch(error, errorInfo) {
Sentry.withScope(scope => {
Object.keys(errorInfo).forEach(key => {
scope.setExtra(key, errorInfo[key]);
});
Sentry.captureException(error);
});
}
render() {
const { list, loading, getList } = this.props;
const user = undefined;
return (
<div classname="App">
<button
type="button"
onclick="{()" > console.log(user.email)}
>
test error1
</button>
<div onclick="{()" > Sentry.showReportDialog()}>Report feedback1</div>
<h1>Muusika Otsija</h1>
<br />
<search onsearch="{value" > getList(value)} enterButton />
{loading && <skeleton avatar title="{false}" loading="{true}" active />}
{!loading && (
<list
itemlayout="horizontal"
datasource="{list}"
locale="{{" emptytext: <div /> }}
renderItem={item => (
<List.Item>
<List.Item.Meta
avatar={<avatar src="{item.artist.picture}" />}
title={item.title}
description={item.artist.name}
/>
</List.Item>
)}
/>
)}
</div>
);
}
}
export default connect(
mapState,
mapDispatch
)(Container);PĂ€rast selle nupu integreerimist peate seda testima brauseris.

Meil on esimene viga

VĂ€ga hea!

Kui klÔpsate pealkirja veal, nÀete virna jÀlgimist.

Teated nÀevad halvad vÀlja. Loomulikult oleme nÀinud veateateid, ilma et oleksime teadnud, kus see kood asub. Vaikimisi rÀÀgime ReactJS-i allikakaardist, kuna need ei ole seadistatud.
Sooviksin samuti anda juhiseid allikakaardi seadistamiseks, kuid see teeks selle artikli palju pikemaks, kui kavandasin.
Saate seda teemat uurida . Kui see artikkel teid huvitab, avaldab teise osa allikakaardi integreerimisest. Nii et vajutage rohkem nagu ja tellige , et mitte jÀÀda ilma teisest osast.
5. Kasutamine Sentry lÔpp-punkti API
Okei. Oleme eelnevates punktides vaadanud JavaScripti erandeid. Kuid mida me teeme XHR vigadega?
Sentryl on ka kohandatud veahaldus. Olen kasutanud seda API vigade jÀlgimiseks.
Sentry.captureException(err)Saate oma rakenduse, e-posti jne kaudu seadistada vea nime, taseme, lisada andmeid ja unikaalseid kasutajaandmeid.
superagent
.get(`https://deezerdevs-deezer.p.rapidapi.com/search?q=${query}`)
.set("X-RapidAPI-Key", #id_key)
.end((err, response) => {
if (err) {
Sentry.configureScope(
scope => scope
.setUser({"email": "john.doe@example.com"})
.setLevel("Error")
);
return Sentry.captureException(err);
}
if (response) {
return dispatch(setList(response.body.data));
}
});Soovin kasutada API catch jaoks ĂŒhist funktsiooni.
import * as Sentry from "@sentry/browser";
export const apiCatch = (error, getState) => {
const store = getState();
const storeStringify = JSON.stringify(store);
const { root: { user: { email } } } = store;
Sentry.configureScope(
scope => scope
.setLevel("Error")
.setUser({ email })
.setExtra("store", storeStringify)
);
// Sentry.showReportDialog(); - Kui soovite kasutajate tagasisidet veast
return Sentry.captureException(error);
};Importige see funktsioon API kutses.
export default query => (dispatch, getState) => {
superagent
.get(`https://deezerdevs-deezer.p.rapidapi.com/search?q=${query}`)
.set("X-RapidAPI-Key", #id_key)
.end((error, response) => {
if (error) {
return apiCatch(error, getState)
}
if (response) {
return dispatch(setList(response.body.data));
}
});
};Kontrollime meetodeid:
- setLevel vĂ”imaldab sisestada veateate taseme Sentry juhtpaneelile. Sellel on omadused â âfataalneâ, âveadâ, âhoiatusâ, âlogiâ, âinfoâ, âdebugâ, âkriitilineâ.
- setUser aitab salvestada mingeid kasutajaandmeid (id, e-posti aadress, makseplaan jne).
- setExtra vÔimaldab mÀÀrata mistahes andmeid, mida vajate, nÀiteks pood.
Kui soovite saada kasutaja tagasisidet vea kohta, peaksite kasutama funktsiooni showReportDialog.
Sentry.showReportDialog();VĂ€ljund:
TĂ€na kirjeldasime ĂŒhte viisi, kuidas integreerida Sentry React rakendusse.
â Telegrami vestlus
Allikas: habr.com
