【问题标题】:AWS Cognito with Angular 4: Error: Missing region in config带有 Angular 4 的 AWS Cognito:错误:配置中缺少区域
【发布时间】:2018-03-02 14:22:35
【问题描述】:

我正在开发一个使用 AWS 服务后端大小的 Web 应用程序。 在这一刻,我使用 AWS Cognito 来管理用户会话。 我正在使用 Angular 4(使用 TypeScript / JavaScript 语言)开发应用程序,我发现这个有用的类(在 AWS Cognito 的 JavaScript SDK 中)应该为我提供大量需要在前端显示的数据:

http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityServiceProvider.html

问题是我在这个对象上调用的任何方法,控制台都会返回这个错误:

Error: Missing region in config
at Request.VALIDATE_REGION (event_listeners.js:91)
at Request.callListeners (sequential_executor.js:105)
at callNextListener (sequential_executor.js:95)
at event_listeners.js:85
at finish (config.js:315)
at Config.getCredentials (config.js:360)
at Request.VALIDATE_CREDENTIALS (event_listeners.js:80)
at Request.callListeners (sequential_executor.js:101)
at Request.emit (sequential_executor.js:77)
at Request.emit (request.js:683)

我不明白为什么会发生这种情况,因为我已经正确配置了区域,如下所示:

//Setting AWS credentials
AWS.config.region = environment.region;
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
  IdentityPoolId : environment.identityPoolId
});

如果我使用指令console.log(AWS.config.region),控制台会打印正确的区域。

为什么它继续显示该错误?

完整代码:

var params = {
UserPoolId: environment.clientId,
};

//Setting AWS credentials
AWS.config.region = environment.region;
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
  IdentityPoolId : environment.identityPoolId
});

this.cognitoidentityserviceprovider.listUsers(params, function(err, data) {
  console.log(AWS.config.region)

  if (err) console.log(err); // an error occurred
  else     console.log(data);           // successful response
});

路径始终为 console.log(err),错误始终为 Missing region in config。 为什么这种情况会继续发生?

【问题讨论】:

    标签: javascript angular amazon-web-services console amazon-cognito


    【解决方案1】:

    如果你这样做呢:

    var CognitoIdentityServiceProvider = AWS.CognitoIdentityServiceProvider;
    var client = new CognitoIdentityServiceProvider({ apiVersion: '2016-04-19', region: 'us-east-1' });
    

    你在客户端对象上调用 listUsers 吗?我相信在初始化服务客户端时应该传递区域。

    【讨论】:

      【解决方案2】:

      这个问题是不久前提出的,但这对我有用:

      当您加载 AWS 开发工具包以创建 AWS 实例时,您可能必须在此处设置区域,如下所示:

      const AWS = require('aws-sdk'); 
      
      AWS.config.update({
        region: 'us-west-1',
      }); 
      
      function(){
        var identityService = new AWS.CognitoIdentityServiceProvider({
                apiVersion: '2016-04-18'
       });   
      
       ...
      
      }
      

      请注意,您可能还需要设置凭据,具体取决于操作。在这种情况下,您可以使用如下代码:

      const AWS = require('aws-sdk'); 
      
      AWS.config.update({
        region: 'us-west-1',
        accessKeyId: process.env.YOUR_ACCESSKEY,
        secretAccessKey: process.env.YOUR_SECRETKEY
      }); 
      
        function(){
           var identityService = new AWS.CognitoIdentityServiceProvider({
                apiVersion: '2016-04-18'
           });   
      
           ...
      
      }
      

      【讨论】:

        猜你喜欢
        • 2018-04-11
        • 2016-04-26
        • 2015-11-05
        • 2021-01-02
        • 2015-11-20
        • 2020-10-03
        • 2022-09-30
        • 2018-04-26
        • 2021-06-11
        相关资源
        最近更新 更多