Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I am using AWS Cognito to user user pools and authentication.

My registration is working but my login function is throwing an error:

/node_modules/aws-sdk/lib/request.js:31 throw err; ^

ReferenceError: window is not defined

Here is the function:

app.post('/login', function(req, res, next) {

console.log("Email: " + req.body.email);
console.log("Password: " + req.body.password);

var authenticationData = {
  Username: req.body.username,
  Password: req.body.password
};

var authenticationDetails = new AWS.CognitoIdentityServiceProvider
  .AuthenticationDetails(authenticationData);

var poolData = {
  UserPoolId: '*removed for security*',
  ClientId: '*removed for security*'
};

var userPool = new AWS.CognitoIdentityServiceProvider.CognitoUserPool(
poolData);
var userData = {
Username: req.body.username,
Pool: userPool
};

var cognitoUser = new AWS.CognitoIdentityServiceProvider.CognitoUser(
userData);

cognitoUser.authenticateUser(authenticationDetails, {
  onSuccess: function(result) {
    console.log('access token + ' +   result.getAccessToken().getJwtToken());

  AWS.config.credentials = new AWS.CognitoIdentityCredentials({
    IdentityPoolId: '*removed for security*',
    Logins: {
      '*removed for security*': result
        .getIdToken().getJwtToken()
    }
  });

},
onSuccess: function(suc) {
  console.log('Login Successful!');
},
onFailure: function(err) {
        console.log('Login Unsuccessful');
  alert(err);
},

});
});

I'm pretty sure the error is occuring during execution of the following line as I placed debug logs throughout the code and it only executed up till here:

var cognitoUser = new AWS.CognitoIdentityServiceProvider.CognitoUser(userData);
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
382 views
Welcome To Ask or Share your Answers For Others

1 Answer

AWS Cognito JS SDK is meant to be used on the client's side. If you wish to use it on the server side, you can mock the window object using window-mock library for example.

npm install --save window-mock

Then, on top of the file and before your function, add the following:

import WindowMock from 'window-mock';
global.window = {localStorage: new WindowMock().localStorage};

After this, you're gonna get navigator not defined error, which you can solve with:

global.navigator = () => null;

Then you should be able to print the result on either of the callbacks.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...