Company logo
  • Jobs
  • Bootcamp
  • About Us
  • For professionals
    • Home
    • Jobs
    • Courses and challenges
    • Questions
    • Teachers
    • Bootcamp
  • For business
    • Home
    • Our process
    • Plans
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Calculator

0

177
Views
Trouble with AWS CognitoIdentityServiceProvider

I'm trying to call the adminGetUser function through the AWS CognitoIdentityServiceProvider. The initialising looks fine to me, but i'm getting the following error.

[Nest] 43  - 03/29/2022, 9:18:43 AM   ERROR [ExceptionHandler] Cannot read properties of undefined (reading 'CognitoIdentityServiceProvider')
TypeError: Cannot read properties of undefined (reading 'CognitoIdentityServiceProvider')
at new UsersService (/usr/src/app/src/users/users.service.ts:21:36)
at Injector.instantiateClass (/usr/src/app/node_modules/@nestjs/core/injector/injector.js:301:19)
at callback (/usr/src/app/node_modules/@nestjs/core/injector/injector.js:48:41)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at Injector.resolveConstructorParams (/usr/src/app/node_modules/@nestjs/core/injector/injector.js:124:24)
at Injector.loadInstance (/usr/src/app/node_modules/@nestjs/core/injector/injector.js:52:9)
at Injector.loadProvider (/usr/src/app/node_modules/@nestjs/core/injector/injector.js:74:9)
at async Promise.all (index 3)
at InstanceLoader.createInstancesOfProviders (/usr/src/app/node_modules/@nestjs/core/injector/instance-loader.js:44:9)
at /usr/src/app/node_modules/@nestjs/core/injector/instance-loader.js:29:13

Following this code:

import AWS from 'aws-sdk';
import { Injectable } from '@nestjs/common';
import { Repository } from 'typeorm';
import { User } from 'models/user.entity';
import { CreateUserDto } from './dto/create-user.dto';
import { InjectRepository } from '@nestjs/typeorm';

@Injectable()
export class UsersService {
  config = {
    apiVersion: '2016-04-18',
    region: 'eu-central-1',
  };

  cognitoIdentity: AWS.CognitoIdentityServiceProvider;

  constructor(
    @InjectRepository(User)
    private usersRepository: Repository<User>,
  ) {
    this.cognitoIdentity = new AWS.CognitoIdentityServiceProvider(this.config);
  }

  async findByCognitoSub(cognitoSub: string): Promise<User | undefined> {
    const result = await this.usersRepository.find({ where: { cognitoSub } });
    if (result.length !== 1) {
      return undefined;
    }
    return result[0];
  }

  getUser(userPoolId: string, userName: string) {
    return this.cognitoIdentity.adminGetUser({
      UserPoolId: userPoolId,
      Username: userName,
    });
  }

Any help would be greatly appreciated!

7 months ago · Juan Pablo Isaza
1 answers
Answer question

0

I have no idea why this worked. I'd been importing AWS by

import AWS from 'aws-sdk';

Eventually I managed to get it working by importing with

import * as AWS from 'aws-sdk';
7 months ago · Juan Pablo Isaza Report
Answer question
Find remote jobs