我正在使用AWS Lambdas尝试连接到CMS,我遇到了以下错误:
在完成请求之前退出流程
以下是我的代码段:
require('dotenv').config({ silent: true });
const contentful = require('contentful');
exports.handler = (event, context) => {
const client = contentful.createClient({
space: process.env.SPACE_ID,
accessToken: process.env.CDA_TOKEN
})
client.getEntries({
'content_type': 'thumbnail'
})
.then(function (entries) {
context.succeed(JSON.stringify(entries));
})
};
这个错误是否表明我的代码中某处出现了错误,导致它无法运行context.succeed或者我正在使用context.succeed?
答案 0 :(得分:1)
在完成请求之前退出流程
这意味着你有一个未处理的异常。你的处理程序基本崩溃而没有告诉Lambda为什么。
查看您的代码时,很有可能client.getEntries()
承诺被拒绝,而您没有为您的承诺提供.catch()
。
您可以执行以下操作......
// Use callback coz context.succeed() is soooo legacy.
exports.handler = (event, context, callback) => {
const client = contentful.createClient({
space: process.env.SPACE_ID,
accessToken: process.env.CDA_TOKEN
})
return client.getEntries({
'content_type': 'thumbnail'
})
// Be consistent with arrow function usage.
.then((entries) => callback(null, JSON.stringify(entries)))
// This is what is missing.
.catch((err) => {
// Log the error so you know what it is and fix it.
console.error(err);
// Be polite and tell Lambda that the invocation failed.
callback(err);
});
};