Vi kan testa Sentry med en produktionsuppbyggnad genom att ange:
yarn build
och från byggmappen anger du:
npx http-server -c-1
Problemet vi omedelbart stöter på är att Sentrys felposter refererar till radnummer i den minifierade batchen; inte särskilt användbart.
Tjänsten Sentry förklarar detta genom att dra källmapparna för det reducerade paketet efter att ha mottagit ett fel. I det här fallet kör vi från localhost (inte tillgängligt av Sentry-tjänsten).
Lösningar (Källkartor)
Lösningen på detta problem är att köra programmet från en offentlig webbserver. En enkel svarsknapp för att använda GitHub Pages-tjänsten (gratis). Stegen att använda är vanligtvis följande:
Kopiera innehållet i mappen SLUTRESULTAT till en mapp docs i förvarets rotkatalog.
Sätta på GitHub-sidor i arkivet (från GitHub) för att använda docs-mappen i Master grenar
Push ändringar till GitHub
Notera: efter att jag kommit på vad jag behöver använda skapa-skapa-app startsida för att starta applikationen. Kom på att lägga till följande i package.json:
Låt oss gå igenom genom att klicka på Hej-knappen.
Med ett fel som visas så här:
Observationer:
Den här felrapporten kunde inte vara tydligare, BRAVO.
Illustration av Unaccounted for Errors
På samma sätt, låt oss gå igenom knappklicket Fel.
Med ett fel som visas så här:
Bättre hantering av oredovisade fel (rendering)
Introduktion av felgränser
Ett JavaScript-fel i en del av användargränssnittet bör inte bryta hela applikationen. För att lösa detta problem för React-användare introducerar React 16 ett nytt koncept som kallas "error bounds".
Felgränser är React-komponenter som fångar JavaScript-fel var som helst i deras underordnade komponentträd, loggar dessa fel och återger ett reservgränssnitt istället för komponentträdet som kraschade. Felgränser fångar upp fel under rendering, i livscykelmetoder och i konstruktörerna för hela trädet under dem.
.
Nytt beteende för oupptäckta fel
Denna förändring är betydande. Från och med React 16 kommer fel som inte fångades av någon felgräns att resultera i att hela React-komponentträdet avmonteras.
Ett viktigt förtydligande som tog mig ett tag innan jag insåg detta är det ovanstående beteende fungerar bara med fel som kastas i renderingsmetoden (eller mer troligt i någon av livscykelmetoderna). Att till exempel använda felgränser skulle inte göra någon nytta med vår knapp Fel; det här felet fanns i klickhanteraren.
Låt oss skapa ett exempel på renderingsfel och sedan använda felgränser för att hantera felet mer elegant.