I have created a serverless app with some APIs to insert and fetch data from dynamoDB. When I'm running app without serverless-webpack it's running fine but when I add plugin serverless-webpack, APIs are giving below error:
GET /dev/get-player-score/%7BID%7D (λ: getPlayerScore) × Unhandled exception in handler 'getPlayerScore'. × Runtime.ImportModuleError: Error: Cannot find module 'getPlayerPoints' Require stack: - C:\Users\user\Desktop\serverless_project\aws-node-project\node_modules\serverless-offline\src\lambda\handler-runner\in-process-runner\aws-lambda-ric\UserFunction.js at _loadUserApp (C:\Users\user\Desktop\serverless_project\aws-node-project\node_modules\serverless-offline\src\lambda\handler-runner\in-process-runner\aws-lambda-ric\UserFunction.js:310:15) at async module.exports.load (C:\Users\user\Desktop\serverless_project\aws-node-project\node_modules\serverless-offline\src\lambda\handler-runner\in-process-runner\aws-lambda-ric\UserFunction.js:341:21) at async InProcessRunner.run (file:///C:/Users/user/Desktop/serverless_project/aws-node-project/node_modules/serverless-offline/src/lambda/handler-runner/in-process-runner/InProcessRunner.js:41:21) at async MessagePort. (file:///C:/Users/user/Desktop/serverless_project/aws-node-project/node_modules/serverless-offline/src/lambda/handler-runner/worker-thread-runner/workerThreadHelper.js:24:14) × Error: Cannot find module 'getPlayerPoints' Require stack: - C:\Users\user\Desktop\serverless_project\aws-node-project\node_modules\serverless-offline\src\lambda\handler-runner\in-process-runner\aws-lambda-ric\UserFunction.js
serverless.yaml file:
service: aws-node-project
frameworkVersion: '3'
provider:
name: aws
runtime: nodejs18.x
stage: dev
environment:
tableName: ${self:custom.tableName}
iamRoleStatements:
- Effect: Allow
Action:
- dynamodb:*
Resource: '*'
plugins:
- serverless-s3-sync
- serverless-offline
- serverless-webpack
package:
individually: true
custom:
tableName: player-points
s3Sync:
- bucketName: testbucket-123efgh
localDir: UploadData
serverless-offline:
lambdaPort: 4000
functions:
getUser:
handler: src/lambdas/endpoints/getUser.handler
events:
- http:
path: get-user/{ID}
method: GET
getPlayerScore:
handler: src/lambdas/endpoints/getPlayerPoints.handler
events:
- http:
path: get-player-score/{ID}
method: GET
createPlayerScore:
handler: src/lambdas/endpoints/createPlayerPoints.handler
events:
- http:
path: create-player-score/{ID}
method: POST
resources:
Resources:
TestBucketUpload:
Type: AWS::S3::Bucket
Properties:
BucketName: testbucket-123efgh
MyDynamoTable:
Type: AWS::DynamoDB::Table
Properties:
TableName: ${self:custom.tableName}
AttributeDefinitions:
- AttributeName: ID
AttributeType: S
KeySchema:
- AttributeName: ID
KeyType: HASH
BillingMode: PAY_PER_REQUEST
getPlayerPoints.js
const Responses = require('../common/API_responses');
const Dynamo = require('../common/Dynamo');
const tableName = process.env.tableName;
exports.handler = async event => {
console.log('event',event);
if(!event.pathParameters || !event.pathParameters.ID){
console.log("responses",Responses);
return Responses._404({message: "failed as ID not in data"})
}
let ID = event.pathParameters.ID;
const user = await Dynamo.get(ID,tableName).catch(err =>{
console.log('error in Dynamo get',err);
return null;
});
console.log("reached",user);
if(!user){
return Responses._404({message:"not found"});
}
return Responses._200({"message":`found data with ID - ${user.ID}`})
}
Please help with the same.