AWS Cognito unauthenticated login error (window is not defined) [JS]

amazon-web-services, javascript

Solution

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.

Problem

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); ```

Original source