util.crypto.lib。randomBytes 不是函数:aws cognito js 在身份验证时引发错误

IT技术 javascript reactjs amazon-web-services amazon-cognito
2021-05-21 00:40:00

我收到以下错误:

TypeError: __WEBPACK_IMPORTED_MODULE_0_aws_sdk_global__.util.crypto.lib.
randomBytes is not a function

当我尝试使用我编写的以下代码对用户进行身份验证时:

import { CognitoUserPool, CognitoUserAttribute, CognitoUser, AuthenticationDetails } 
from 'amazon-cognito-identity-js';

let authenticationDetails = new AuthenticationDetails({
    Username: username,
    Password: password
});

let userPool = new CognitoUserPool({
    UserPoolId: 'us-east-1_1TXXXXXXbXX',
    ClientId: '4da8hrXXXXXXXXXXXXmj1'
});

let cognitoUser = new CognitoUser({
    Username: username,
    Pool: userPool
});

// THE ERROR IS THROWN AS SOON AS IT HITS THE BELOW
// STATEMENT
cognitoUser.authenticateUser(authenticationDetails, {
    onSuccess: function (result) {
        console.log('access token + ' + result.getAccessToken().getJwtToken());
    },
    onFailure: function(err) {
        console.log(err);
    }
});

这可能是什么原因?我错过了什么?

在此处输入图片说明

2个回答

更新(2018 年 1 月 12 日):

amazon-cognito-identity-js开发者已经锁定了aws-sdk在v1.31.0版本,所以你不必降级aws-sdk了,刚刚升级包:

npm install amazon-cognito-identity-js@1.31.0 --save

看起来aws-sdk包裹有问题amazon-cognito-identity-js是您正在使用的依赖项

您可以尝试通过运行来降级它:

npm install aws-sdk@2.177.0 --save

降级是目前唯一的选择。我面对这个错误几个小时,无法弄清楚实际问题。我猜 AWS 应该保持适当的版本控制并只推送稳定版本。:\ aws-sdk 2.177.0 工作正常。您可以使用 AWS 的 angular-2-cognito 样板。