Serverless not including my node_modules

Viewed 14362

I have a nodejs serverless project that has this structure:

-node_modules
-package.json
-serverless.yml
-funcitons
   -medium
     -mediumHandler.js

my serverless.yml:

service: googleAnalytic

    provider:
      name: aws
      runtime: nodejs6.10

      stage: dev
      region: us-east-1

    package:
      include:
        - node_modules/**

        functions:
          mediumHandler:
            handler: functions/medium/mediumHandler.mediumHandler
            events:

              - schedule:
              name: MediumSourceData 
              description: 'Captures data between set dates'
              rate: rate(2 minutes)

          - cloudwatchEvent:
              event:
                source:
                  - "Lambda"
                detail-type:
                  - ""
          - cloudwatchLog: '/aws/lambda/mediumHandler'

my sls info shows:

Service Information
service: googleAnalytic
stage: dev
region: us-east-1
stack: googleAnalytic-dev
api keys:
  None
endpoints:
  None
functions:
  mediumHandler: googleAnalytic-dev-mediumHandler

When I run sls:

serverless invoke local -f mediumHandler 

it works and my script where I included googleapis and aws-sdk work. But when I deploy, those functions are skipped and show no error.

2 Answers

When debugging serverless's packaging process, use sls package (or sls deploy --noDeploy (for old versions). You'll get a .serverless directory that you can inspect to see what's inside the deployment package.

From there, you can see if node_modules is included or not and make changes to your serverless.yml correspondingly without needing to deploy every time you make a change.

Serverless will exclude development packages by default. Check your package.json and ensure your required packages are in the dependencies object, as devDependencies will be excluded.

Related