Deshacerse del manejo de errores con NodeJS + Express

( Jaydipsinh Vaghela) (1 de septiembre de 2020)

Foto de Erik Mclean en Unsplash

El manejo de errores en Javascript es un poco un poco de dolor cuando recién está comenzando. Hoy te voy a explicar cómo manejar los errores con NodeJS + Express y las diferentes formas de hacerlo.

La razón por la que estoy escribiendo este artículo es porque cuando hago una entrevista para un puesto junior, normalmente se hace la pregunta de cómo manejar una ruta que no existe o cómo manejar los errores al crear una API con NodeJS? Muchos desarrolladores no pueden responder a esta pregunta. Así que este artículo es especialmente para desarrolladores principiantes o junior.

Vamos a utilizar NodeJS (v12.18. *), Express (v4.17. *) Y ESLint con Directriz de estilo de codificación de Airbnb . He adjuntado el enlace de Github para su referencia si desea revisarlo.

Aquí están las cosas que cubriremos:

  • Comprender cómo express define rutas y su mapeo
  • Crear middleware express para manejar API cuando no existe una ruta
  • Comprender qué sucede si el código genera errores aleatorios
  • Cree middleware express para manejar cualquier tipo de error

Mecanismo de ruta express & No existe ninguna ruta middleware

Nosotros puede agregar una ruta para expresar usando el método app.use() o express.Router(). Cuando usamos este método, express sigue el enfoque de arriba a abajo para agregar la lista de rutas registradas. Entonces, cuando llamamos a una API, el servidor comienza a encontrar la ruta coincidente de arriba a abajo. Durante este proceso, atiende la solicitud con la primera ruta coincidente. Puede crear la misma ruta varias veces con express, pero con este enfoque, la primera ruta siempre se ejecuta para atender la solicitud.

Si alguien intenta acceder a un punto final de API que no existe, obtiene un error inesperado del servidor. Para una mejor práctica, debemos ocuparnos de este tipo de situación. No podemos lanzar un error inesperado al frontend si lo consideramos desde una perspectiva de UX. Para manejar una situación así, necesitamos usar el middleware express que se encargará de una situación no existe una ruta . Aquí hay un código de ejemplo.

No existe ninguna ruta de middleware

Este middleware debe ser la última declaración de su código de definición de ruta. Cualquier otra ruta definida después de este middleware nunca se ejecutará, por lo que la posición de este middleware es muy importante. Cuando express comienza a buscar una ruta y si no encuentra ninguna ruta que coincida, express ejecuta el código de este middleware donde podemos tomar la acción apropiada. Básicamente, respondemos con un mensaje de error adecuado en la respuesta para que el encargado de la interfaz pueda tomar las medidas adecuadas.

Error en la lógica empresarial & cómo manejarlo

La experiencia del usuario es la clave del éxito de cualquier aplicación web. ¡Siempre queremos la interacción del usuario con un ambiente positivo incluso con errores! Estamos escribiendo toneladas de código todos los días y no es posible escribir el código sin errores. Especialmente cuando estás en el nivel junior, hay más posibilidades de cometer errores. Cuando se trata de express para la API, si nuestro código falla normalmente, todo el objeto de error se pasa como respuesta a la solicitud que no es válida en ninguna circunstancia. Necesitamos manejar las fallas de código de tal manera que podamos pasar el mensaje de error adecuado al usuario. Aquí está el código recortado para agregar middleware para manejar cualquier error en express.

Error en el manejo del middleware

Con esto, los errores generados dentro de la lógica empresarial se devolverán dentro del objeto de error. El objeto de error contiene el seguimiento de la pila completa sobre el error. Podemos obtener el estado del objeto de respuesta para manejar la información correctamente. Si no se encuentra ningún código de estado, devolvemos el código de estado 500 predeterminado, lo que significa que algo salió mal en el servidor. Siempre hay un mensaje dentro del objeto de seguimiento de errores en un formato legible por humanos para describir el error.

Me gustaría agregar algunas cosas avanzadas aquí al considerar la compilación de producción. Debemos enviar una alerta a algún lugar para tomar las medidas adecuadas ante cada error.Normalmente, prefiero enviar una alerta por correo electrónico al equipo de desarrolladores o puede usar un software de seguimiento de errores como BugSnag para rastrear todo tipo de cosas.

A continuación se muestra un fragmento de código con código de trabajo para que pueda ejecutarlo localmente y jugar con él para comprenderlo mejor. También puede encontrar el acceso de código completo en el repositorio con código de trabajo.

Enlace de GitHub: https://github.com/Jaydipsinhv/express-demo

Código de trabajo completo con manejo de errores

Espero que este artículo ayude al desarrollador junior a obtener más claridad con el manejo de excepciones.