Se débarrasser de la gestion des erreurs avec NodeJS + Express

( Jaydipsinh Vaghela) (1er septembre 2020)

Photo de Erik Mclean sur Unsplash

La gestion des erreurs en Javascript est un peu un peu de douleur lorsque vous débutez. Aujourdhui, je vais vous expliquer comment gérer les erreurs avec NodeJS + Express et différentes façons de le faire.

La raison pour laquelle jécris cet article est que lorsque je prends une interview pour un rôle junior, je poser normalement la question de savoir comment gérer une route qui nexiste pas ou comment gérer les erreurs lors de la création dune API avec NodeJS? De nombreux développeurs sont incapables de répondre à cette question. Cet article est donc spécialement destiné aux développeurs débutants ou juniors.

Nous allons utiliser NodeJS (v12.18. *), Express (v4.17. *) Et ESLint avec Guide de style de codage Airbnb . Jai joint le lien Github pour votre référence si vous souhaitez lexaminer.

Voici les choses que nous allons couvrir:

  • Comprendre comment express définit les routes et leur mappage
  • Créer un middleware express pour gérer lAPI lorsquaucune route nexiste
  • Comprendre ce qui se passe si le code génère des erreurs aléatoires
  • Créer un middleware express pour gérer tout type derreur

Mécanisme de routage express & Aucune route nexiste middleware

Nous peut ajouter une route à exprimer en utilisant la méthode app.use() ou express.Router(). Lorsque nous utilisons cette méthode, express suit lapproche de haut en bas pour ajouter la liste des routes enregistrées. Ainsi, lorsque nous appelons une API, le serveur commence à trouver litinéraire correspondant de haut en bas. Au cours de ce processus, il sert la demande avec la première route correspondante. Vous pouvez créer la même route plusieurs fois avec express, mais avec cette approche, la première route est toujours exécutée pour répondre à la requête.

Si quelquun essaie daccéder à un point de terminaison dAPI qui nexiste pas, vous obtenez une erreur inattendue du serveur. Pour une meilleure pratique, nous devons nous occuper de ce genre de situation. Nous ne pouvons pas lancer une erreur inattendue sur le frontend si nous considérons cela dans une perspective UX. Pour gérer une telle situation, nous devons utiliser le middleware express qui va soccuper dune situation aucune route nexiste . Voici un exemple de code.

Aucune route nexiste middleware

Ce middleware doit être la dernière instruction de votre code de définition ditinéraire. Toute autre route définie après ce middleware ne sera jamais exécutée, la position de ce middleware est donc très importante. Quand express commence à chercher une route et sil ne trouve aucune route correspondante, alors express exécute le code de ce middleware où nous pouvons prendre les mesures appropriées. Fondamentalement, nous répondons avec un message derreur approprié dans la réponse afin que le responsable du frontend puisse prendre les mesures appropriées.

Erreur dans la logique métier & comment le gérer

Lexpérience utilisateur est la clé du succès de toute application Web. Nous voulons toujours une interaction utilisateur avec une ambiance positive même avec des erreurs! Nous écrivons des tonnes de code chaque jour et il n’est pas possible d’écrire le code sans erreur. Surtout quand vous êtes au niveau junior, il y a plus de chances davoir des erreurs. Lorsque vous traitez avec express pour lAPI, si notre code plante normalement, tout lobjet derreur est passé comme réponse à la requête qui nest valide en aucune circonstance. Nous devons gérer les pannes de code de manière à pouvoir transmettre le message derreur approprié à lutilisateur. Voici le code extrait pour ajouter un middleware pour gérer toute erreur dans express.

Gestion des erreurs middleware

En utilisant ceci, les erreurs générées dans la logique métier seront renvoyées dans lobjet derreur. Lobjet derreur contient la trace de pile complète de lerreur. Nous pouvons obtenir le statut de lobjet de réponse pour gérer correctement les informations. Si aucun code détat nest trouvé, nous renvoyons le code détat 500 par défaut, ce qui signifie quune erreur sest produite sur le serveur. Il y a toujours un message à lintérieur de lobjet de trace des erreurs dans un format lisible par lhomme pour décrire lerreur.

Je voudrais ajouter quelques éléments avancés ici lorsque je considère la version de production. Nous devrions envoyer une alerte quelque part pour prendre les mesures appropriées sur chaque erreur.Normalement, je préfère envoyer une alerte par e-mail à léquipe de développement ou vous pouvez utiliser un logiciel de suivi derreurs comme BugSnag pour suivre toutes sortes de choses.

Vous trouverez ci-dessous un extrait de code avec du code fonctionnel afin que vous puissiez lexécuter localement et jouer avec pour mieux comprendre. Vous pouvez également trouver le accès au code complet sur le dépôt avec le code de travail.

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

Code de travail complet avec gestion des erreurs

Jespère que cet article aidera le développeur junior à obtenir plus de clarté avec la gestion des exceptions.