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

92
Vistas
Devolver promesas de la función Netlify

Estoy trabajando en una función sin servidor que se alojará en Netlify para suscribir a los usuarios a una lista de correo electrónico de Mailchimp.

Recibo el siguiente error oscuro:

lambda response was undefined. check your function code again

Aquí está mi función:

 const handler = async function (event, context) { try { let body = JSON.parse(event.body); mailchimp.setConfig({ apiKey: 'XXXXXXXXX', server: 'us20', }); const submit = async () => { const response = await mailchimp.lists.addListMember("XXXXXXXX", { email_address: body.email.toLowerCase(), status: 'subscribed' }); if (response.errors !== undefined && response.errors.length) { throw new Error(response.errors); } } submit().then(response => { console.log(response); return { statusCode: 200, body: JSON.stringify({ response }), } }).catch(errors => { return { statusCode: 500, body: JSON.stringify({ errors }), } }); } catch (error) { // output to netlify function log console.log(error); return { statusCode: 500, // Could be a custom message or object ie JSON.stringify(err) body: JSON.stringify({ msg: error.message }), } } } module.exports = { handler }

Creo que el problema puede deberse a que no se devuelve nada después de llamar a enviar (), pero no estoy seguro de cuál es la mejor manera de devolverlo. Todavía no puedo entender las promesas en mi cabeza.

Realmente espero que alguien pueda indicarme la dirección correcta.

muchas gracias david

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

0

Está en el camino correcto, no se devuelve nada en la función de envío, por lo que la respuesta siempre será indefinida. También está utilizando .then con sintaxis async/await que está bien, async/await es solo una forma más limpia de usar promesas, por lo que normalmente usa una u otra. Y anidar bloques catch aquí es innecesario. Yo lo reescribiría a algo como esto:

 const handler = async function (event, context) { try { let body = JSON.parse(event.body); mailchimp.setConfig({ apiKey: 'XXXXXXXXX', server: 'us20', }); const submit = async () => { const response = await mailchimp.lists.addListMember("XXXXXXXX", { email_address: body.email.toLowerCase(), status: 'subscribed' }); if (response.errors !== undefined && response.errors.length) { throw new Error(response.errors); } return response; } const response = await submit(); return { statusCode: 200, body: JSON.stringify({ response }), } } catch (error) { // output to netlify function log console.log(error); return { statusCode: 500, // Could be a custom message or object ie JSON.stringify(err) body: JSON.stringify({ msg: error.message }), } } }

Si todavía tiene problemas con las promesas, le recomiendo que lea los documentos correspondientes, así como los documentos para async/await.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function

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