Con el uso de Express y TypeScript, estoy tratando de crear un middleware para detectar errores como eq. Centinela, el código está abajo:
const catchError = ( error: Error, req: Request, _res: Response, next: any ) => { console.log("ERROR: ", error); //some logic next(error); }índice.ts
app.use(bodyParser.json({ limit })); app.use(morgan("[:date[iso]] :method :url :status :response-time ms")); app.use(express.json()); app.use(cors({ credentials: true, origin: true })); app.use(bodyParser.urlencoded({ extended: false })); //controllers app.use(catchError as express.ErrorRequestHandler)por qué mi middleware funciona solo cuando pongo:
} catch (error) { next(error); } en la función ¿dónde hay un error y no funciona sin él? Este middleware también debería detectar errores y excepciones sin usar next(error)
¡Gracias por cualquier ayuda!
Creo que necesita agregar una anulación de método para usar ese controlador de errores personalizado.
const methodOverride = require('method-override') app.use(bodyParser.json({ limit })); app.use(morgan("[:date[iso]] :method :url :status :response-time ms")); app.use(express.json()); app.use(cors({ credentials: true, origin: true })); app.use(bodyParser.urlencoded({ extended: false })); // Try to use this to override the custom error handler app.use(methodOverride()) app.use(catchError as express.ErrorRequestHandler)Referencia: