我一直在使用无服务器应用程序使用Node 6,我决定迁移到async / await,因为版本8.x已经发布。
Altough,我遇到了授权器功能的问题。由于我删除了回调参数并只返回了值,因此它停止工作。如果我向回调参数发送一些内容,它会保持正常工作,但它不是async / await-like。即使我抛出异常,它也无法正常工作。
module.exports.handler = async (event, context) => {
if (typeof event.authorizationToken === 'undefined') {
throw new InternalServerError('Unauthorized');
}
const decodedToken = getDecodedToken(event.authorizationToken);
const isTokenValid = await validateToken(decodedToken);
if (!isTokenValid) {
throw new InternalServerError('Unauthorized');
} else {
return generatePolicy(decodedToken);
}
};
有关如何进行的任何建议吗?
谢谢你们!
答案 0 :(得分:3)
我在这里遇到了同样的问题。似乎授权者还不支持异步/等待。一种解决方案是获取整个async / await函数并在处理程序中调用。像这样:
const auth = async event => {
if (typeof event.authorizationToken === 'undefined') {
throw new InternalServerError('Unauthorized');
}
const decodedToken = getDecodedToken(event.authorizationToken);
const isTokenValid = await validateToken(decodedToken);
if (!isTokenValid) {
throw new InternalServerError('Unauthorized');
} else {
return generatePolicy(decodedToken);
}
}
module.exports.handler = (event, context, cb) => {
auth(event)
.then(result => {
cb(null, result);
})
.catch(err => {
cb(err);
})
};
答案 1 :(得分:0)
对于2020年抵达这里的人们-现在按OP所述工作。