Javascript 为什么我的Lambda回调不起作用?
我正在AWS SAM local上运行AWS Cognito signin进程身份验证API。我从Cognito获得了正确的身份验证,但是当signInUser承诺解析(具有正确的响应)时,它不会触发状态代码为200的回调,而是在catch中触发回调(状态代码为400) 请参见此处的Lambda函数:-Javascript 为什么我的Lambda回调不起作用?,javascript,amazon-web-services,lambda,es6-promise,Javascript,Amazon Web Services,Lambda,Es6 Promise,我正在AWS SAM local上运行AWS Cognito signin进程身份验证API。我从Cognito获得了正确的身份验证,但是当signInUser承诺解析(具有正确的响应)时,它不会触发状态代码为200的回调,而是在catch中触发回调(状态代码为400) 请参见此处的Lambda函数:- // A signin Lambda function export function handler (event: Object, context: Object, callback: Fu
// A signin Lambda function
export function handler (event: Object, context: Object, callback: Function) {
switch (event.httpMethod) {
case "GET":
// hard code login for SO question
signInUser({ username: 'XXXX', password: 'XXXXXXX'})
.then((response) => {
console.log('This log is called correctly but callback on the next line is not');
callback(null, {
statusCode: 200,
header: response.tokens.idToken.jwtToken,
body: "This is a signin operation, return success result"
});
})
.catch(
callback(null, {
statusCode: 400,
body: "This is a failed signin operation"
})
);
break;
default:
// Send HTTP 501: Not Implemented
console.log("Error: unsupported HTTP method (" + event.httpMethod + ")");
callback(null, {statusCode: 501})
}
}
你知道是什么导致了这种情况发生,或者如何修复它吗
非常感谢 .catch()
接受一个函数,但您正在传递回调的结果。试试这个:
.catch( (error) =>
callback(null, {
statusCode: 400,
body: "This is a failed signin operation"
})
)
将
回调
函数传递到捕获
的方式是错误的。