Manejo de errores en Express.js: estrategias efectivas y mensajes de respuesta

Durante el desarrollo de aplicaciones, el manejo de errores es un aspecto crucial para garantizar una experiencia de usuario fluida y mitigar problemas imprevistos. En el Express.js entorno, tiene varias formas de manejar los errores y proporcionar mensajes de respuesta adecuados a los usuarios. Aquí hay una guía sobre cómo lograr esto:

Uso Middleware para el manejo de errores globales

Cree un manejo de errores global middleware agregando el siguiente código al final del app.js archivo o principal de su Express.js aplicación.

app.use((err, req, res, next) => {  
  console.error(err.stack);  
  res.status(500).send('Something went wrong!');  
});  

Manejo de errores para específicos Route

En un mensaje específico route, puede usar un bloque try- catch para detectar errores y proporcionar mensajes de respuesta apropiados.

app.get('/profile/:id', async(req, res) => {  
  try {  
    const user = await getUserById(req.params.id);  
    res.json(user);  
  } catch(error) {  
    res.status(404).send('User not found!');  
  }  
});  

Uso de error centralizado Middleware

Cree un error centralizado middleware para manejar los errores que se originan en varios archivos route.

app.use((req, res, next) => {  
  const error = new Error('Not found');  
  error.status = 404;  
  next(error);  
});  
  
app.use((err, req, res, next) => {  
  res.status(err.status || 500);  
  res.send(err.message || 'Something went wrong');  
});  

Manejo de errores asincrónicos

En el caso del manejo asincrónico, use el next método para pasar errores al manejo global de errores middleware.

app.get('/data',(req, res, next) => {  
  fetchDataFromDatabase((err, data) => {  
    if(err) {  
      return next(err);  
    }  
    res.json(data);  
  });  
});  

 

Conclusión

El manejo de errores es una parte integral del Express.js desarrollo de aplicaciones. Al utilizar middleware, manejar errores específicos y proporcionar mensajes de respuesta apropiados, puede crear una experiencia de aplicación fluida y confiable para sus usuarios.