Безсерверный авторизатор async ждет не работает - PullRequest
0 голосов
/ 04 июня 2018

Я работал с Node 6 со своим приложением без сервера, и я решил перейти на async / await, так как была выпущена версия 8.x.

Хотя у меня возникла проблема сфункция авторизатора.Так как я удалил параметр обратного вызова и просто возвратил значение, он перестал работать.Если я отправляю что-то в параметр обратного вызова, он продолжает работать нормально, но это не похоже на async / await.Это не работает, даже если я выбрасываю исключение.

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);
    }
};

Любые предложения о том, как действовать?

Спасибо вам всем!

1 Ответ

0 голосов
/ 02 июля 2018

Я столкнулся с той же проблемой здесь.Кажется, авторы еще не поддерживают async / await.Одним из решений было бы получить всю вашу функцию 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);
      })
};
...