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
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;
}
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!