File size: 989 Bytes
0dc7194 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | /**
* Middleware centralizado de manejo de errores.
*
* Responsabilidades:
* - Capturar errores lanzados por controladores, servicios o middlewares.
* - Si es HttpError conocido: responder con el status y codigo definido.
* - Si es error inesperado: loguear el stack y responder 500 generico
* ("Internal server error") para no filtrar detalles internos en produccion.
*
* Montado al final de app.js como ultimo middleware.
*/
import { HttpError } from '../utils/apiResponse.js';
import { logger } from '../utils/logger.js';
export const errorHandler = (err, req, res, _next) => {
if (err instanceof HttpError) {
return res.status(err.status).json({
ok: false,
error: { code: err.code, message: err.message, details: err.details },
});
}
logger.error({ err, path: req.path, method: req.method }, 'unhandled error');
return res.status(500).json({
ok: false,
error: { code: 'INTERNAL', message: 'Internal server error' },
});
};
|