在我的本地mocha测试中,以下处理程序函数运行得非常好。然而,当我上传到AWS(使用Serverless框架)时,它会超时(除非您不提供
特别奇怪的是,在不到3秒的时间内(超时设置为5秒),作业就完成了,甚至输出了“事后”日志消息,但它还是在调用回调函数,而且没有完成Lambda函数。
以下是cloudwatch日志:
uid
参数,在这种情况下它会立即正确地响应)。特别奇怪的是,在不到3秒的时间内(超时设置为5秒),作业就完成了,甚至输出了“事后”日志消息,但它还是在调用回调函数,而且没有完成Lambda函数。
以下是cloudwatch日志:
]1
以下是handler函数:export const handler = (event: IRequestInput, context: IContext, cb: IGatewayCallback) => {
console.log('EVENT:\n', JSON.stringify(event, null, 2));
const uid = _.get(event, 'queryStringParameters.uid', undefined);
if(!uid) {
cb(null, {
statusCode: 412,
body: 'no User ID was provided by frontend'
});
return;
}
oauth.getRequestToken()
.then(token => {
console.log('Token is:\n', JSON.stringify(token, null, 2));
console.log('User ID: ', uid);
token.uid = uid;
return Promise.resolve(token);
})
.then((token) => {
console.log('URL: ', token.url);
cb(null, {
statusCode: 200,
body: token.url
});
console.log('post-facto');
})
.catch((err: PromiseError) => {
console.log('Problem in getting promise token: ', err);
cb(err.message);
});
};
(function recurse () { setInterval(recurse, 1) })()
的 js 文件,然后使用 node 运行它,该进程将永远不会退出,除非你手动杀死它。除非你添加我回答中的那一行,否则回调 Lambda 将遵守这一点。在这种情况下,Lambda 实际上只会在你调用回调之后调用process.exit()
。 - idbehold