Menu
CoddyTech

Una respuesta de error

Parte de la sección Conceptos básicos de Express del Journey de Node.js de Coddy. Lección 17 de 23.

Una ruta puede fallar porque algo salió mal en el servidor. Lanzar un Error entrega ese fallo a Express. Un controlador de errores es un middleware con cuatro parámetros, incluido err en primer lugar. Express envía los errores lanzados a este tipo de middleware.

app.use((err, req, res, next) => {
    res.status(500).json({error: 'Try later'});
});

Coloca el controlador después de las rutas. El cliente debería recibir un mensaje breve, mientras que el servidor puede registrar los detalles. Conserva los cuatro parámetros aunque next no se use: Express utiliza la forma de la función para reconocer los controladores de errores.

Antes de añadir un controlador, GET /broken devuelve la propia página de error HTML de Express. Llamar a next(err) también reenvía un error al controlador de errores; llamar a next() continúa con normalidad.

challenge icon

Desafío

Fácil

«Ejecutar» inicia solo practice-errors/server.js. Los archivos de Recipe Box quedan intactos y los continuarás en la próxima lección.

Pulsa «Ejecutar» y envía GET /broken para ver la página de error predeterminada. Añade un controlador de errores después de las rutas. Registra err.message con console.error; después, envía el estado 500 y {"error":"Try later"}. La respuesta no debe exponer Database offline, pero la consola debe mostrarlo.

Las rutas que lanzan errores están en el archivo bloqueado practice-errors/routes.js. Mantén su montaje; escribe el controlador en server.js.

Pruébalo tú mismo

import routes from './routes.js';
import express from 'express';
const app = express();
app.use(routes);
// Agrega aquí el manejador de errores.
app.listen(3000);

Todas las lecciones de Conceptos básicos de Express

Practica por tu cuenta: Playground de Express