未捕获:TypeError:AWS.CognitoIdentityCredentials不是构造函数

时间:2018-05-27 09:32:31

标签: amazon-web-services typescript requirejs amazon-cognito

我遇到了自定义构建AWS-SDK的问题。也许这只是一个愚蠢的问题,我没有看到森林里的树,但它让我发疯。所以我们得到了。

我基于核心版本2.247.1构建了一个带有所有Cognito和DynamoDB服务的sdk,如亚马逊告诉我们here

然后我试着在我的代码中要求它如下:

const AWS = require('../../../../assets/scripts/aws-sdk-2.247.1.js');

更多我遵循AWS向我们展示here的示例实现。

所以我想出了这个代码来获取已登录用户的会话:

getUserSession(
        response: ICognitoResponse,
        callback: ( callbackResponse: ICognitoResponse ) => {} ) {

        // Validate the Usersession
        this.cognitoUser.getSession((err: any, session: any) => {
            if (err) {
                response = assign(response, { err });
                callback( response );
                return;
            } else {
                /**
                 * Set the right URL
                 * @type {string}
                 */
                const URL = 'cognito-idp.' +
                    environment.AWS_REGION +
                    '.amazonaws.com/' +
                    environment.USERPOOL_ID;

                /**
                 * Update the Credentials with the current updated URL
                 * @type {AWS.CognitoIdentityCredentials}
                 */
                AWS.config.credentials = new AWS.CognitoIdentityCredentials({
                    /**
                     * your identity pool id here
                     */
                    IdentityPoolId: environment.USERPOOL_ID,
                    Logins: {

                        /**
                         * Change the key below according to the
                         * specific region your user pool is in.
                         */
                        URL: session.getIdToken().getJwtToken(),
                    },
                });
            }
        });
    }

它编译没有任何错误,我可以登录。但在此之后,我收到以下错误:

  

未捕获:TypeError:AWS.CognitoIdentityCredentials不是构造函数

如果我使用完整的javascript SDK使用相同的代码,这是疯狂的,一切正常。

希望你们中的一些人可以帮助我。我确实尝试了几种不同的导入技术,例如import *作为AWS等等。没有任何效果。

2 个答案:

答案 0 :(得分:0)

根据AWS.config.credentials = new AWS.CognitoIdentityCredentials({

中对象的定义,您必须将AWS.AWS.config.credentials = new AWS.AWS.CognitoIdentityCredentials({替换为aws-sdk.js

答案 1 :(得分:0)

我明白了。首先在index.html的脚本tg中导入库。然后将以下内容添加到ts-File:

declare var AWS: any

之后可以在Angular 5 App中将其用作AWS.config和AWS.CognitoIdentityCredentials。