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

97
Vistas
Express.js: el controlador de errores globales de Express no funciona, la excepción sigue bloqueando la aplicación

Agregué un controlador de error global rápido en las últimas líneas de app.js, sin embargo, una excepción lanzada en un controlador aún bloqueó la aplicación.

identidad.controlador.js

 const createError = require('http-errors'); exports.identifyUser = async (req, res) => { throw new createError(404, 'Test'); }

aplicación.js

 // Configure routes routes.register(app); app.use(function(err, req, res, next) { res.status(err.status || 500).json(response.error(err.status || 500)); }); module.exports = app;

Cuando se llamó a la identifyUser del usuario, espero una respuesta de error 500 de express. Sin embargo, no se detectó una excepción y eliminó mi aplicación.

 NotFoundError: Test at exports.identifyUser (C:\Users\......\src\api\controllers\identity.controller.js:9:11) at Layer.handle [as handle_request] (C:\Users\......\node_modules\express\lib\router\layer.js:95:5) at next (C:\Users\......\node_modules\express\lib\router\route.js:144:13) at C:\Users\......\src\api\middlewares\authUser.js:30:16 at C:\Users\......\node_modules\jsonwebtoken\verify.js:223:12 at getSecret (C:\Users\......\node_modules\jsonwebtoken\verify.js:90:14) at module.exports [as verify] (C:\Users\......\node_modules\jsonwebtoken\verify.js:94:10) at C:\Users\......\src\api\middlewares\authUser.js:19:16 at Layer.handle [as handle_request] (C:\Users\......\node_modules\express\lib\router\layer.js:95:5) at next (C:\Users\......\node_modules\express\lib\router\route.js:144:13) at Route.dispatch (C:\Users\......\node_modules\express\lib\router\route.js:114:3) at Layer.handle [as handle_request] (C:\Users\......\node_modules\express\lib\router\layer.js:95:5) at C:\Users\......\node_modules\express\lib\router\index.js:284:15 at Function.process_params (C:\Users\......\node_modules\express\lib\router\index.js:346:12) at next (C:\Users\......\node_modules\express\lib\router\index.js:280:10) at Function.handle (C:\Users\......\node_modules\express\lib\router\index.js:175:3) at router (C:\Users\......\node_modules\express\lib\router\index.js:47:12) at Layer.handle [as handle_request] (C:\Users\......\node_modules\express\lib\router\layer.js:95:5) at trim_prefix (C:\Users\......\node_modules\express\lib\router\index.js:328:13) at C:\Users\......\node_modules\express\lib\router\index.js:286:9 at Function.process_params (C:\Users\......\node_modules\express\lib\router\index.js:346:12) at next (C:\Users\......\node_modules\express\lib\router\index.js:280:10) Node.js v18.7.0 [nodemon] app crashed - waiting for file changes before starting...

Estoy ejecutando Node.js v18.7.0 con Express 4.18.1 en Windows 11.

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

0

De la documentación Express:

Para los errores devueltos por funciones asincrónicas invocadas por controladores de ruta y middleware, debe pasarlos a la función next(), donde Express los detectará y procesará.

Intenta reemplazar

 exports.identifyUser = async (req, res) => { throw new createError(404, 'Test'); }

por

 exports.identifyUser = async (req, res, next) => { next(new createError(404, 'Test')); }
about 4 years ago · Juan Pablo Isaza Denunciar

0

No creo que necesite errores http siempre que esté usando express, puede lanzar un nuevo error.

Prueba esto:

 exports.identifyUser = async (request, response, next) => { try { throw new Error (404, 'Test')); } catch { next (Error); } }
about 4 years ago · Juan Pablo Isaza Denunciar

0

El controlador de errores global de Express no detectará ningún error en su aplicación, aún debe hacerlo usted mismo con un bloque try/catch y luego llamar a la next función con su error como parámetro.

 const createError = require('http-errors'); exports.identifyUser = async (req, res, next) => { try { throw new createError(404, 'Test'); } catch(err) { next(err); } }
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