¡Hola, gente guapa y genial, totalmente increíble! Estoy tratando de hacer que esta función de middleware personalizada se ejecute ante un error. Estoy usando express y tengo una función de middleware personalizada que debería ejecutarse cuando se produce un nuevo error.
Todo esto está escrito en expreso. He leído los documentos y todavía estoy luchando para corregir esto. Aquí está la función de middleware.
const errorHandler = (err, req, res, next) => { console.log("running error handler middleware") const statusCode = res.statusCode ? res.statusCode : 500 res.status(statusCode) res.json({ message: err.message, stack: process.env.NODE_ENV === "production" ? null : err.stack }) } module.exports = errorHandlerAquí está mi punto de entrada
const express = require('express') const dotenv = require('dotenv').config() const colors = require('colors') const errorHandler = require('./middleware/errorMiddleware') const connectDB = require('./config/db') const port = process.env.PORT || 5000 const app = express() connectDB() //these lines of middleware allow us to grab info from the req.body app.use(express.json()) app.use(express.urlencoded({extended:false})) app.use('/api/goals', require('./routes/goalRoutes')) app.use('/api/users', require('./routes/userRoutes')) //pulling in our error handler middleware app.use(errorHandler) app.listen(port, () => { console.log(`Server started on port ${port}`) })He confirmado que la estructura de mi archivo es correcta y estoy extrayendo el middleware desde la ubicación correcta. También me aseguré de colocar mi app.use(errorHandler) en la parte inferior de mi código para asegurarme de que sea el último controlador de errores que se ejecute.
A partir de ahora, cuando encuentro un error, mi aplicación falla por completo y no devuelve una respuesta json con un seguimiento de la pila.
Esto va a causar problemas más adelante cuando intente enviar errores al lado del cliente.
Siempre puedo volver a definirlos manualmente a través de res.status(statusCode).json({mensaje}) pero esta es la forma de "nodo" de hacer las cosas y no implementa la sintaxis expresa de "lanzar nuevo error (mensaje)"
¿Alguna idea sobre cómo obtener una respuesta json de esto sin que la aplicación se bloquee mientras se sigue usando el manejo de errores personalizado y se lanza un nuevo error?
Muchas gracias por el tiempo, lo aprecio!