Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

151
Vistas
El middleware de error no funciona en el backend hecho con funciones express y en la nube

Estoy tratando de manejar errores con express con middleware de error. Este es mi índice:

 const functions = require("firebase-functions"); const express = require("express"); const cors = require("cors"); require("dotenv").config(); const methodOverride = require('method-override') const {logErrors, errorHandler,boomErrorHandler, error404Handler } = require("./src/middlewares/error.handler") //modulos personalizados const { productsRoutes } = require("./src/products/products.routes"); const userRoutes = require("./src/users/user.routes"); const UserServices = require("./src/users/user.services") //nombre const userService = new UserServices const app = express(); app.use(express.urlencoded({ extended: true })); app.use(express.json()); app.use(cors({ origin: true })); app.use(methodOverride()); app.use(logErrors); app.use(boomErrorHandler); app.use(errorHandler); // app.use(error404Handler); exports.setCustomerClaim = functions.auth .user() .onCreate(userService.customerClaimServ) productsRoutes(app); exports.api = functions.https.onRequest(app);

Como puede ver, tengo el middleware logErrors.

Este es mi controlador simple que arroja las cosas bien, pero cuando hago un next() dentro de catch() no entra en el middleware de error.

este es mi controlador:

 async function getAll(req, res, next) { try { const products = await productServices.getAllSer(); console.log("Aca esta tu error"); res.json(products); } catch (error) { next(); } }

este es mi software intermedio:

 /* eslint-disable @typescript-eslint/no-var-requires */ const boom = require("@hapi/boom"); function logErrors(err, req, res, next) { console.error(err); next(err); } function errorHandler(err, req, res, next) { if (err) { res.status(409).json({ message: err.message, stack: err.stack, }); } else { next(err); } } function boomErrorHandler(err, req, res, next) { if (err.isBoom) { const {output} = err; res.status(output.statusCode).json(output.payload); } next(err); } function error404Handler (req, res) { res.status(404) res.send ({ message: boom.notFound('el recurso que busca no existe') }) } module.exports= { logErrors, errorHandler, boomErrorHandler, error404Handler };

El problema es que no está entrando en el middleware de error porque cualquier cosa antes de next() funciona bien.

Apreciaría cualquier ayuda. ¡Gracias por adelantado!

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Su problema está en el controlador, use así return next(error); :

 async function getAll(req, res, next) { try { const products = await productServices.getAllSer(); console.log("Aca esta tu error"); res.json(products); } catch (error) { return next(error); } }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda