Uncaught: TypeError: AWS.CognitoIdentityCredentials is not a constructor

Uncaught: TypeError: AWS.CognitoIdentityCredentials is not a constructor

我遇到了自定义构建 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(),
                    },
                });
            }
        });
    }

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

Uncaught: TypeError: AWS.CognitoIdentityCredentials is not a constructor

如果我将相同的代码与完整的 javascript SDK 一起使用,顺便说一句,它非常庞大,一切正常。

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

您必须根据 aws-sdk.js

中的对象定义将 AWS.config.credentials = new AWS.CognitoIdentityCredentials({ 替换为 AWS.AWS.config.credentials = new AWS.AWS.CognitoIdentityCredentials({

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

declare var AWS: any

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