Runtime.ImportModuleError while executing AWS lambda typescript

Viewed 31

I am using aws-cdk to create the lambda function so for that I have created one folder at root name as lambda, inside that I have three folders functions, handlers and utils.

My folder structure is as below

-- lambda
   -- handlers
      -- createUserHandler.ts
   -- functions
      -- createUser.ts
   -- utils
-- sqs

The folder handlers will have the handle function which will be the starting point of execution of lambda during invocation and folder functions have some business logic to perform some operations. I am calling one method which is written in the createUser.ts file from createUserHandler.ts. I am getting below error

{
    "errors": [
        {
            "path": [
                "createUser"
            ],
            "data": null,
            "errorType": "Runtime.ImportModuleError",
            "errorInfo": null,
            "locations": [
                {
                    "line": 1,
                    "column": 23,
                    "sourceName": null
                }
            ],
            "message": "Error: Cannot find module '../functions/createUser'\nRequire stack:\n- /var/task/createUserHandler.js\n- /var/runtime/UserFunction.js\n- /var/runtime/index.js"
        }
    ]
}

AWS cdk code of lambda creation

const createPayment = new lambda.Function(this, 'CreatePayment', {
      runtime: lambda.Runtime.NODEJS_12_X,
      handler: 'createUserHandler.handler',
      code: lambda.Code.fromAsset("src/lambda/handlers"),
      timeout: cdk.Duration.minutes(5),
      functionName: `createUser-${stage}`,
      memorySize: 1024,
      role: lambdaExecutionRole,
    });

createUserHandler.ts

import createUser = require("../functions/createUser");

export async function handler(event:Event) {
    return await createPayment.default(event.arguments.user);
}

createUser.ts

const AWS = require('aws-sdk');
const docClient = new AWS.DynamoDB.DocumentClient();

async function createUser(user) {
    const params = {
        TableName: process.env.USER_TABLE,
        Item: user
    }
    try {
        await docClient.put(params).promise();
        return user;
    } catch (err) {
        console.log('DynamoDB error: ', err);
        return null;
    }
}

export default createUser;

I am completely new to typescript and struggling for the last 24 hours please help me to get it resolved. Thanks

0 Answers
Related