Я пытаюсь получить сообщение об ошибке от Lambda для отображения на моем клиенте. По сути, я вызываю конечную точку API-шлюза с моего клиента, который выполняет лямбду. В этой функции есть определенное условие, и если это условие не выполняется, я хочу отправить конкретное сообщение c моему клиенту. Это то, что у меня сейчас есть.
Библиотека:
export function failure(body) {
return buildResponse(500, body);
}
function buildResponse(statusCode, body) {
return {
statusCode: statusCode,
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Credentials': true
},
body: body
};
}
и фактическая функция:
export async function main(event, context) {
const data = JSON.parse(event.body);
const saleCount = await getSaleCount();
if (count >= 25) {
// This is the error i'm referring to
return failure({ status: false, error: 'My error' });
}
const params = {
TableName: process.env.salesTable,
Item: {
foo: bar
}
};
try {
await dynamoDbLib.call('put', params);
return success(params.Item);
} catch(e) {
console.log(e);
return failure({ status: false });
}
}
async function getSaleCount(foo) {
// do stuff and return value
return bar;
}
Кажется, я не могу получить сообщение в этом ошибка в интерфейсе. Есть предложение try-catch, и ошибка определенно подхватывается перехватчиком, но ошибка просто отображается как
Error: Request failed with status code 500
at createError (createError.js:16)
at settle (settle.js:17)
at XMLHttpRequest.handleLoad (xhr.js:59)
Более того, я могу фактически увидеть сообщение как ответ на моей вкладке Сеть:
{"status": "false", "error": "My error"}
Это интеграция с Lambda Proxy, поэтому я попробовал следующие методы на этой странице: https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html Значение:
// This returns me a 502 on the frontend
throw new Error('My error');
// This also doesn't allow me to access the message
return {statusCode: 400, body: 'My error'};
I ' Я в абсолютной растерянности, поэтому я очень ценю любой вклад. Большое спасибо!