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

227
Visualizações
Devolver la promesa de Fetch al publicar a través de Nodemailer

Quiero ejecutar el código en un .then() después de que se resuelva fetch() , el problema es que mi .then() no se ejecuta después de que se resuelve el método POST , sin embargo, lo hace si se rechaza.

Lo que estoy haciendo es enviar un correo a través de mi servidor usando Nodemailer. Así que no estoy del todo seguro de cuál es el problema, pero tal vez Nodemailer no devuelve una promesa a la llamada o tarda demasiado y, por lo tanto, solo ejecuta .then() si se rechaza. ¿Alguien sabe cuál es el problema y cómo se puede resolver o tal vez si hay formas alternativas en las que puedo ejecutar algún código después de que se haya resuelto fetch() ?

Envío del formulario:

 const handleSubmit = (e) => { e.preventDefault(); fetch("http://localhost:4000/send_mail", { method: 'POST', body: formData }).then((res) => { //This does not run on resolve if (res.ok) { } }); }

Servidor:

 app.post("/send_mail", cors(), async (req, res) => { await transport.sendMail({ from: sender, to: receiver, subject: "Subject", html: ``, attachments: [{ filename: filename, content: content } }) });
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Envía una respuesta desde tu servidor:

 transport.sendMail({ // mailoptions }, (err, data) => { if (err) { console.log(err); res.status(400).send('Error'); } else { res.status(200).send('Success'); } })
about 4 years ago · Juan Pablo Isaza Relatório

0

El problema es que su código del lado del servidor no envía ninguna respuesta, por lo que la solicitud en sí se cuelga infinitamente hasta que la solicitud se agota, ya sea del lado del servidor o del lado del cliente. Por lo tanto, nunca se llamará a then , sino que se producirá un error en algún momento en el lado del cliente.

Su código del lado del servidor debería verse así:

 app.post("/send_mail", cors(), async (req, res) => { try { await transport.sendMail({ from: sender, to: receiver, subject: "Subject", html: ``, attachments: [{ filename: filename, content: content } }) res.status(200).send('Success'); } catch (err) { // some kind of error response, you need to decide // which status code is the propper one res.status(500).send('Error'); } });
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