Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

698
Views
AWS lambda layers error when call API "cannot find module"

I try to use layers of AWS Lambda, watched a tutorial about it, but I get an error "cannot find module ..."

service: aws-nodejs 

package:
  exclude:
    - .gitignore
    - package.json
    - .git/**

provider:
  name: aws
  profile: sandbox
  runtime: nodejs12.x

layers:
  testLayer:
    path: testLayer
    compatibleRuntimes:
      - nodejs12.x
    allowedAccounts:
      - '*'

functions:
  hello:
    handler: handler.hello
    layers:
      -  arn:aws:lambda:us-east-1:*:layer:testLayer:15
    events:
      - http:
          path: test
          method: get
          cors: true

When i deploy it, i don't have any errors in my terminal, and on AWS, i see my layer and when i download it, i have my package.json with moment dependency, and the node_modules folder with moment

my handler.js looks like this :

'use strict';
module.exports.hello = async (event, context) => {
    const moment = require('moment')
    const a = moment('2016-01-01')
  return {
    statusCode: 200,
    body: JSON.stringify({
      message: 'Hey' + a
    }),
  };
};

My files structure :

testLayer/
   node_modules/
      moment/
   package.json
serverless.yml
handler.js
package.json

Do you have any idea of what i doing wrong ?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Yes, it's possible that your node modules are there in your lambda layer and yet lambda is throwing error of "cannot find module..".

This may be happening because the zip that you have created is not as per directory structure mentioned in AWS documentation.

As per official documentation :

Including Library Dependencies in a Layer You can move runtime dependencies out of your function code by placing them in a layer. Lambda runtimes include paths in the /opt directory to ensure that your function code has access to libraries that are included in layers.

To include libraries in a layer, place them in one of the folders supported by your runtime.

Node.js – nodejs/node_modules, nodejs/node8/node_modules (NODE_PATH)

Example AWS X-Ray SDK for Node.js

nodejs/node_modules/aws-xray-sdk

Make sure your zip contains correct directory structure else try importing your modules from /opt/your_node_module_directory

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!