I was following the AWS Lambda tutorial on automating deployments of Lambda-based applications and have uploaded a simple lambda function to AWS via CodePipeline and CloudFormation, but am getting the following error while trying to run my lambda function:
{
"errorMessage": "Module version mismatch. Expected 48, got 46.",
"errorType": "Error",
"stackTrace": [
"Object.Module._extensions..node (module.js:597:18)",
"Module.load (module.js:487:32)",
"tryModuleLoad (module.js:446:12)",
"Function.Module._load (module.js:438:3)",
"Module.require (module.js:497:17)",
"require (internal/module.js:20:19)",
"bindings (/var/task/node_modules/bindings/bindings.js:81:44)",
"Object.<anonymous> (/var/task/node_modules/time/index.js:8:35)",
"Module._compile (module.js:570:32)"
]
}
The contents of my lambda function are as follows...
samTemplate.yaml
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: Outputs the time
Resources:
TimeFunction:
Type: AWS::Serverless::Function
Properties:
Handler: index.handler
Runtime: nodejs6.10
CodeUri: ./
Events:
MyTimeApi:
Type: Api
Properties:
Path: /TimeResource
Method: GET
buildspec.yml
version: 0.1
phases:
install:
commands:
- npm install time
- aws cloudformation package --template-file samTemplate.yaml --s3-bucket <redacted>
--output-template-file NewSamTemplate.yaml
artifacts:
type: zip
files:
- NewSamTemplate.yaml
and index.js
var time = require('time');
exports.handler = (event, context, callback) => {
var currentTime = new time.Date();
currentTime.setTimezone("America/Los_Angeles");
callback(null, {
statusCode: '200',
body: 'The time in Los Angeles is: ' + currentTime.toString(),
});
};
On the AWS page of the Lambda function I do have NodeJS 6.10 set as the runtime, so I'm confused why I'm getting this error. Any ideas?
I found the problem. In the build step, I was using Node v4 (by the tutorial's guidance) when it should have been v6. Check your build step matches the Node version your lambda function is using!
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.