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

291
Vistas
¿Cómo manejar el rechazo de la promesa no controlada en el método de objeto asíncrono en Node.js expressjs?

Estoy usando la función asíncrona dentro del objeto para enviar una respuesta en express.js

Código del controlador:

 module.exports = { async signUpEmail(req, res) { /** * @description Parameters from body * @param {string} firstName - First Name * @inner */ const firstName = req.body.firstName; res.send({ success: name }); throw new Error(); // purposely Done } }

Pregunta:

Dado que el método signUpEmail es asíncrono en mi caso y será rechazado con lo que sea que arroje mi método asíncrono, aquí viene Error . (puesto allí a propósito)

así que conseguir esto registrado en la consola.

 (node:13537) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error (node:13537) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Entonces se supone que debo manejarlo desde las rutas desde donde lo llamo.

Código de enrutador

 const routes = require('express').Router(); const SignUpController = require('../controllers/signUpController') // /signup routes.post('/', SignUpController.signUpEmail); module.exports = routes;

algunos como este SignUpController.signUpEmail().then(…); Pero como no estoy llamando a la función en las rutas, solo estoy pasando. ¿Cómo se puede hacer esto de manera efectiva ?

PD: Por favor, no sugiera soluciones demasiado complicadas. Soy principiante con JS y estoy aprendiendo.

No utilicé controladores de ruta encadenables porque quiero crear un controlador de ruta modular y montable.

Ejemplo de documento oficial

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

En su ruta, deberá agregar un contenedor para detectar errores arrojados:

 let wrapper = fn => (...args) => fn(...args).catch(args[2]); // /signup routes.post('/', wrapper(SignUpController.signUpEmail));

Con este método, puede usar un receptor de errores de nivel superior y no necesita usar bloques internos de captura de prueba en sus rutas, a menos que los necesite contextualmente.

Use middleware de captura de errores para lograr esto de la siguiente manera:

 // last middleware in chain app.use(function(err, req, res, next) { // handle your errors });

Ahora en sus rutas puede arrojar errores y serán capturados por ese middleware. Me gusta lanzar errores personalizados y manejar su respuesta e iniciar sesión en este middleware.

Aparte: el patrón de espera asíncrona es ideal para escribir código asíncrono que es fácil de leer para un humano de forma síncrona. ¡Solo recuerda que una vez que te vuelves asíncrono, debes permanecer asíncrono! Se recomienda encarecidamente usar una biblioteca de promisificación como Bluebird e invocar .promisifyAll en las bibliotecas de nodeback .

EDITAR: Fuente - Manejo de errores asincrónicos en Express con Promises, Generators y ES7

about 4 years ago · Santiago Trujillo 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