Afhjælpning af fejlhåndtering med NodeJS + Express

( Jaydipsinh Vaghela) (1. sep. 2020)

Foto af Erik Mclean Uplash

Fejlhåndtering i Javascript er lidt lidt af en smerte, når du lige er begyndt. I dag vil jeg forklare dig, hvordan du håndterer fejl med NodeJS + Express og forskellige måder at gøre det på.

Årsagen til at jeg skriver denne artikel er, at når jeg tager et interview til en juniorrolle, stille normalt spørgsmålet om, hvordan man håndterer en rute, der ikke findes, eller hvordan man håndterer fejlene, mens man opretter en API med NodeJS? Mange udviklere er ikke i stand til at besvare dette spørgsmål. Så denne artikel er specielt til entry-level eller junior-udviklere.

Vi skal bruge NodeJS (v12.18. *), Express (v4.17. *) Og ESLint med Retningslinje for Airbnb-kodestil . Jeg har vedhæftet Github-linket til din reference, hvis du vil gennemgå det.

Her er de ting, vi vil dække:

  • Forstå, hvordan ekspres definerer ruter og dets kortlægning
  • Opret ekspres middleware til at håndtere API, når der ikke findes nogen rute
  • Forstå hvad der sker, hvis kode genererer tilfældige fejl li>
  • Opret ekspres middleware til at håndtere enhver form for fejl

Express rute mekanisme & Ingen rute findes middleware

Vi kan tilføje en rute, der skal udtrykkes ved hjælp af app.use() eller express.Router() -metoden. Når vi bruger denne metode, følger express den øverste til nederste tilgang for at tilføje listen over registrerede ruter. Så når vi kalder en API, begynder serveren at finde den matchende rute fra top til bund. Under denne proces serverer den anmodningen med den første matchende rute. Du er i stand til at oprette den samme rute flere gange med ekspres, men med denne tilgang bliver den første rute altid udført for at betjene anmodningen.

Hvis nogen forsøger at få adgang til et API-slutpunkt, der ikke findes, får du en uventet fejl fra serveren. For bedste praksis skal vi tage os af denne slags situation. Vi kan ikke smide en uventet fejl i frontend, hvis vi betragter dette fra et UX-perspektiv. For at håndtere en sådan situation er vi nødt til at bruge den ekspres middleware, der skal tage sig af en der findes ingen rute situation. Her er nogle eksempler på kode.

Ingen rute findes mellemvare

Denne middleware skal være den sidste erklæring for din rutedefinitionskode. Enhver anden rute, der er defineret efter denne middleware, bliver aldrig udført, så placeringen af ​​denne middleware er meget vigtig. Når express begynder at kigge efter en rute, og hvis den ikke finder nogen matchende ruter, udfører express koden til denne mellemware, hvor vi kan tage den passende handling. Dybest set svarer vi med en korrekt fejlmeddelelse i svaret, så frontend-fyren kan tage en passende handling på det.

Fejl i forretningslogik & hvordan man håndterer det

Brugeroplevelse er nøglen til succes for enhver webapplikation. Vi vil altid have brugerinteraktion med en positiv stemning, selv med fejl! Vi skriver masser af kode hver dag, og det er ikke muligt at skrive koden uden fejl. Især når du er på juniorniveau, er der større chance for at få fejl. Når vi beskæftiger os med ekspres til APIen, sendes hele fejlobjektet som svar på anmodningen, hvis vores kode normalt går ned, hvilket ikke er gyldigt under nogen omstændigheder. Vi er nødt til at håndtere kodefald på en sådan måde, så vi kan videregive den rette fejlmeddelelse til brugeren. Her er koden, der er klippet til tilføjelse af middleware til håndtering af enhver ekspressfejl.

Fejlhåndtering af middleware

Ved hjælp af dette returneres fejl genereret inden for forretningslogikken inde i fejlobjektet. Fejlobjektet indeholder det fulde stakspor om fejlen. Vi kan få status fra svarobjektet til at håndtere oplysningerne korrekt. Hvis der ikke findes nogen statuskode, returnerer vi standard 500-statuskoden, hvilket betyder, at noget gik galt på serveren. Der er altid en besked inde i sporingsobjektet fejl i et menneskeligt læsbart format for at beskrive fejlen.

Jeg vil gerne tilføje tilføj et par avancerede ting her, når man overvejer produktionsopbygningen. Vi skal sende en advarsel et eller andet sted for at tage passende skridt til enhver fejl.Normalt foretrækker jeg at sende en e-mail-alarm til udviklerteamet, eller du kan bruge fejlsporingssoftware i retning af BugSnag til at spore alle mulige ting.

Nedenfor er et kodestykke med fungerende kode, så du kan køre det lokalt og lege med det for at få en bedre forståelse. Du kan også finde fuld kodeadgang på repoen med arbejdskode.

GitHub Link: https://github.com/Jaydipsinhv/express-demo

Fuld arbejdskode med fejlhåndtering

Jeg håber, at denne artikel hjælper juniorudvikleren med at få mere klarhed med undtagelseshåndtering.