AWS Усилить Cognito | Отсутствует регион в конфиге после того, как я обновил страницу sh - PullRequest
0 голосов
/ 16 января 2020

Я создаю веб-приложение в Angular, используя AWS в качестве моего бэкэнда, и запустил Cognito, который я настроил с помощью Amplify.

После того, как я войду в свое веб-приложение в моем браузер на моем localhost, все работает отлично.

Проблема в том, что, когда я работаю над своим приложением, каждый раз, когда я делаю изменения и браузер обновляется, я получаю сообщение об ошибке:

ConfigError: Missing region in config

Поскольку я использовал Amplify, чтобы настроить его Я не знаю, где установить свой регион и почему это происходит.

Я использую authguard для защиты своих страниц, поэтому только авторизованные пользователи могут видеть весь контент, кроме сайта входа.

async canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
try {
  let user = await Auth.currentAuthenticatedUser();
  console.log('Yes, Im authenticated', user);
  return true;
} catch (e) {
  console.log('Not authenticated ', e);
  this._router.navigate(['/login']);
  return false;
  }
 }
} 

Я немного над головой и потерял представление о том, что есть, после долгой работы над этой проблемой, поэтому, если мне понадобится еще какой-нибудь код или объяснение, я буду счастлив сделать это.

Полная ошибка консоли:

ConfigError: Missing region in config
at Request.VALIDATE_REGION (http://localhost:4200/vendor.js:210527:45)
at Request.callListeners (http://localhost:4200/vendor.js:215956:20)
at callNextListener (http://localhost:4200/vendor.js:215946:12)
at http://localhost:4200/vendor.js:210521:9
at finish (http://localhost:4200/vendor.js:206617:7)
at Config.getCredentials (http://localhost:4200/vendor.js:206662:7)
at Request.VALIDATE_CREDENTIALS (http://localhost:4200/vendor.js:210516:26)
at Request.callListeners (http://localhost:4200/vendor.js:215952:18)
at Request.emit (http://localhost:4200/vendor.js:215928:10)
at Request.emit (http://localhost:4200/vendor.js:214552:14)

1 Ответ

0 голосов
/ 20 января 2020

РЕШЕНИЕ:

Я использовал APP_INITIALIZER, чтобы получить мои регионы в до загрузки компонента, чтобы исправить эту проблему.

В своем модуле приложения для провайдеров я добавил следующее:

{
  provide: APP_INITIALIZER,
  useFactory: startupServiceFactory,
  multi: true
}

Затем я добавил ts-файл в / app со следующими данными:

import {Auth} from 'aws-amplify';
import * as AWS from 'aws-sdk';


export function startupServiceFactory() {
  return () => {
    return new Promise(async (resolve) => {
      const credentials = await Auth.currentCredentials();
      AWS.config.region = 'eu-central-1';
      AWS.config.credentials = Auth.essentialCredentials(credentials);
      resolve();
    });
  };
}

Ссылка на учебное пособие:

https://dzone.com/articles/how-to-use-the-app-initializer-token-to-hook-into

...