Javascript 为什么我的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

我正在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: 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"
    })
)

回调
函数传递到
捕获
的方式是错误的。