Question:
I have a nodejs serverless project that has this structure:
1 2 3 4 5 6 7 |
-node_modules -package.json -serverless.yml -funcitons -medium -mediumHandler.js |
my serverless.yml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
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:
1 2 3 4 5 6 7 8 9 10 11 12 |
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:
1 2 |
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.
Answer:
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.