Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

87
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda