我遇到了自定义构建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等等。没有任何效果。
答案 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。