Node.js : comment éviter l'erreur UnhandledPromiseRejectionWarning: Unhandled promise rejection ?

Comme dans le langage JavaScript, les promesses sont un élément essentiel quand on développe un projet sur la plateforme Node.js. Le langage JavaScript étant asynchrone, les promesses sont un mécanisme essentiel pour définir la logique de fonctionnement de son application. Il peut par contre être difficile de bien les utiliser et on ne doit pas systématiquement s'en servir. C'est la méthode pour résoudre le message d'erreur de type "UnhandledPromiseRejectionWarning".

Si vous rencontrez ce message d'erreur dans le développement d'un code, c'est que vous avez écrit une promesse à un endroit où vous n'auriez pas dû. La promesse ne fonctionne pas et votre code renvoie ce message d'erreur. Avec Node.js, cela peut être le cas si vous travaillez avec le framework Express.js. Ce framework ne supporte pas l'utilisation des promesses dans ses routes. Si vous souhaitez gérer une erreur avec la promesse "catch", cela vous donnera un message d'erreur.

router.get("/monURL", authCheck, async (req, res) => {
  //exemple de code provoquant une erreur
  let resultat = await maClasse.get(req.user._doc.profile_id , '/messages', req.user.accessToken)
  .catch(erreur => { throw erreur})
  res.send(resultat.data)
})

Dans ce cas, si vous ne pouvez pas utiliser une promesse pour gérer l'erreur, alors vous devez utiliser un mécanisme plus simple. Les instructions "try" et "catch" permettent de récupérer une erreur quand elle se produit dans le bloc de code lié au mot-clé "try", puis de la traiter avec des instructions situées dans le bloc lié au mot-clé "catch". Ces instructions fonctionnent également avec du code asynchrone dans le langage JavaScript.

router.get("/emailfetch", authCheck, async (req, res, next) => {
  try {
    //exemple de code provoquant une erreur
  let resultat = await maClasse.get(req.user._doc.profile_id , '/messages', req.user.accessToken)
  res.send(resultat.data)
  } catch (erreur) {
    throw erreur;
  }
})

JavaScript