es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Devolviendo Promesas desde la Función de Netlify

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

Estoy obteniendo el siguiente error oscuro:

la respuesta de lambda fue indefinida. revisa tu código de función nuevamente

Aquí está mi función:

“`const mailchimp = require(‘@mailchimp/mailchimp_marketing’);

const handler = async function (event, context) {
try {
let body = JSON.parse(event.body);

<pre><code>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 i.e. JSON.stringify(err)
body: JSON.stringify({ msg: error.message }),
}
</code></pre>

}

module.exports = { handler }
“`

Creo que el problema puede ser porque no se está devolviendo nada después de llamar a submit(), pero no estoy seguro de la mejor manera de devolverlo. Aún no logro entender completamente las promesas.

Realmente espero que alguien pueda orientarme en la dirección correcta.

Muchas gracias,
David

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Hola David,

    Entiendo que estás tratando de depurar un problema con tu función sin servidor que suscribe usuarios a una lista de correo electrónico de Mailchimp alojada en Netlify. El mensaje de error que estás recibiendo sugiere que tu función lambda no está devolviendo una respuesta correctamente.

    Según tu código, parece que el problema puede estar relacionado con el hecho de que tu función submit() no está devolviendo un valor. Puedes intentar modificar tu función para que devuelva explícitamente el objeto de respuesta, así:

    “` 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;
    }


    Luego, en tu función handler, puedes modificar la respuesta para que devuelva la respuesta de submit() de la siguiente manera:

    submit().then(response => {
    console.log(response);
    return {
    statusCode: 200,
    body: JSON.stringify(response),
    }
    })
    “`

    Espero que eso te ayude a resolver el problema que estás enfrentando. ¡Avísame si tienes alguna otra pregunta o inquietud!

Comments are closed.