Foutafhandeling verwijderen met NodeJS + Express

( Jaydipsinh Vaghela) (1 sep.2020)

Foto door Erik Mclean op Unsplash

Foutafhandeling in Javascript is een beetje beetje vervelend als je net begint. Vandaag ga ik je uitleggen hoe je met NodeJS + Express om moet gaan met fouten en verschillende manieren om het te doen.

De reden dat ik dit artikel schrijf, is dat wanneer ik een sollicitatiegesprek neem voor een juniorfunctie, ik normaal gesproken de vraag stellen hoe een route moet worden afgehandeld die niet bestaat of hoe de fouten moeten worden afgehandeld tijdens het maken van een API met NodeJS? Veel ontwikkelaars kunnen deze vraag niet beantwoorden. Dit artikel is dus speciaal voor beginners- of juniorontwikkelaars.

We gaan NodeJS (v12.18. *), Express (v4.17. *) En ESLint gebruiken met Richtlijnen voor coderingsstijlen van Airbnb . Ik heb de Github-link bijgevoegd voor uw referentie als u deze wilt beoordelen.

Hier zijn de dingen die we zullen behandelen:

  • Begrijpen hoe Express routes definieert en het in kaart brengt
  • Creëer express middleware om API af te handelen wanneer er geen route bestaat
  • Begrijp wat er gebeurt als code willekeurige fouten genereert
  • Maak express middleware om elke fout af te handelen

Express routemechanisme & Er bestaat geen route middleware

We kan een route toevoegen om uit te drukken met behulp van de app.use() of express.Router() methode. Wanneer we deze methode gebruiken, volgt express de benadering van boven naar beneden voor het toevoegen van de lijst met geregistreerde routes. Dus wanneer we een API aanroepen, begint de server de overeenkomende route van boven naar beneden te vinden. Tijdens dit proces bedient het de aanvraag met de eerste matching-route. U kunt dezelfde route meerdere keren maken met Express, maar met deze benadering wordt de eerste route altijd uitgevoerd om aan het verzoek te voldoen.

Als iemand probeert toegang te krijgen tot een API-eindpunt dat niet bestaat, krijgt u een onverwachte fout van de server. Voor de beste praktijken moeten we voor dit soort situaties zorgen. We kunnen geen onverwachte fout naar de frontend gooien als we dit vanuit een UX-perspectief bekijken. Om met een dergelijke situatie om te gaan, moeten we de express middleware gebruiken die een er geen route situatie gaat afhandelen. Hier is een voorbeeldcode.

Er bestaat geen middleware

Deze middleware moet de laatste instructie zijn van uw routedefinitiecode. Elke andere route die na deze middleware wordt gedefinieerd, zal nooit worden uitgevoerd, dus de positie van deze middleware is erg belangrijk. Wanneer express op zoek gaat naar een route en als het geen overeenkomende routes vindt, dan voert express de code van deze middleware uit waar we de gepaste actie kunnen ondernemen. In principe reageren we met een correct foutbericht in het antwoord, zodat de frontend-medewerker er gepaste actie op kan ondernemen.

Fout in bedrijfslogica & hoe ermee om te gaan

Gebruikerservaring is de sleutel tot het succes van elke webtoepassing. We willen altijd gebruikersinteractie met een positieve vibe, zelfs bij fouten! We schrijven elke dag tonnen code en het is niet mogelijk om de code foutloos te schrijven. Zeker als je op junior niveau zit is er meer kans op fouten. Bij het omgaan met Express voor de API, als onze code normaal crasht, wordt het hele foutobject doorgegeven als het antwoord op het verzoek dat onder geen enkele omstandigheid geldig is. We moeten codecrashes op een dergelijke manier afhandelen, zodat we de juiste foutmelding aan de gebruiker kunnen doorgeven. Hier is de code geknipt voor het toevoegen van middleware om elke fout in Express af te handelen.

Fout bij het afhandelen van middleware

Hiermee worden fouten gegenereerd binnen de bedrijfslogica geretourneerd in het foutobject. Het error-object bevat de volledige stacktrace over de fout. We kunnen de status van het responsobject krijgen voor het correct omgaan met de informatie. Als er geen statuscode wordt gevonden, retourneren we de standaard 500-statuscode, wat betekent dat er iets mis is gegaan op de server. Er is altijd een bericht in het foutopsporingsobject in een voor mensen leesbaar formaat om de fout te beschrijven.

Ik zou hier een paar geavanceerde dingen willen toevoegen bij het overwegen van de productieopbouw. We moeten ergens een waarschuwing sturen om bij elke fout passende maatregelen te nemen.Normaal gesproken geef ik er de voorkeur aan om een e-mailwaarschuwing naar het ontwikkelteam te sturen of u kunt software voor foutopsporing gebruiken, zoals BugSnag om allerlei dingen bij te houden.

Hieronder vindt u een codefragment met werkende code, zodat u deze lokaal kunt uitvoeren en ermee kunt spelen om een beter begrip te krijgen. U kunt ook de volledige codetoegang vinden op de opslagplaats met werkende code.

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

Volledig werkende code met foutafhandeling

Ik hoop dat dit artikel de junior ontwikkelaar helpt om meer duidelijkheid te krijgen over het afhandelen van uitzonderingen.