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

701
Visualizações
UnhandledPromiseRejectionWarning: este error se originó al lanzar dentro de una función asíncrona sin un bloque catch

Recibo el siguiente error en mi aplicación Node-Express

UnhandledPromiseRejectionWarning: Rechazo de promesa no controlado. Este error se originó al lanzar dentro de una función asíncrona sin un bloque catch o al rechazar una promesa que no se manejó con .catch(). (id de rechazo: 4)

Por decir lo menos, he creado una función de ayuda que se parece a esto

 const getEmails = (userID, targettedEndpoint, headerAccessToken) => { return axios.get(base_url + userID + targettedEndpoint, { headers: {"Authorization" : `Bearer ${headerAccessToken}`} }) .catch(error => { throw error}) }

y luego estoy importando esta función auxiliar

 const gmaiLHelper = require("./../helper/gmail_helper")

y llamándolo dentro de mi ruta api así

 router.get("/emailfetch", authCheck, async (req, res) => { //listing messages in users mailbox let emailFetch = await gmaiLHelper.getEmails(req.user._doc.profile_id , '/messages', req.user.accessToken) .catch(error => { throw error}) emailFetch = emailFetch.data res.send(emailFetch) })

Por mi parte, creo que estoy manejando el error usando el bloque catch.

Pregunta: ¿Puede alguien explicarme por qué recibo el error y cómo puedo solucionarlo?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

.catch(error => { throw error}) no es operativo. Da como resultado un rechazo no controlado en el controlador de ruta.

Como se explica en esta respuesta , Express no admite promesas, todos los rechazos deben manejarse manualmente:

 router.get("/emailfetch", authCheck, async (req, res, next) => { try { //listing messages in users mailbox let emailFetch = await gmaiLHelper.getEmails(req.user._doc.profile_id , '/messages', req.user.accessToken) emailFetch = emailFetch.data res.send(emailFetch) } catch (err) { next(err); } })
over 4 years ago · Santiago Trujillo Relatório

0

Sugiero eliminar el siguiente código de getMails

 .catch(error => { throw error})

En su función principal, debe poner espera y el código relacionado en el bloque Try y también agregar un bloque catch donde falla el código.


su función gmailLHelper.getEmails debe devolver una promesa que tiene rechazo y resolución en ella.

Ahora, mientras llama y usa await, coloque eso en el bloque try catch (elimine el .catch) como se muestra a continuación.

 router.get("/emailfetch", authCheck, async (req, res) => { //listing messages in users mailbox try{ let emailFetch = await gmaiLHelper.getEmails(req.user._doc.profile_id , '/messages', req.user.accessToken) } catch (error) { // your catch block code goes here })
over 4 years ago · Santiago Trujillo Relatório

0

Está detectando el error, pero luego lo vuelve a lanzar. Debe intentar manejarlo con más gracia, de lo contrario, su usuario verá 500, servidor interno, errores.

Es posible que desee enviar una respuesta que le diga al usuario qué salió mal y registrar el error en su servidor.

No estoy seguro exactamente de qué errores podría devolver la solicitud, es posible que desee devolver algo como.

 router.get("/emailfetch", authCheck, async (req, res) => { try { let emailFetch = await gmaiLHelper.getEmails(req.user._doc.profile_id , '/messages', req.user.accessToken) emailFetch = emailFetch.data res.send(emailFetch) } catch(error) { res.status(error.response.status) return res.send(error.message); }) })

Este código deberá adaptarse para que coincida con los errores que obtiene de la llamada axios.

También convertí el código para usar la sintaxis de prueba y captura ya que ya está usando async.

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