Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Serverless Framework with AWS Lambda error "Cannot find module"

I'm trying to use the Serverless Framework to create a Lambda function that uses open weather NPM module. However, I'm getting the following exception, but my node_modules contain the specific library.

I have managed to run the sample, (https://github.com/serverless/examples/tree/master/aws-node-rest-api-with-dynamodb) successfully, now hacking to add node module to integrate open weather API.

Endpoint response body before transformations: {"errorMessage":"Cannot find module 'Openweather-Node'","errorType":"Error","stackTrace":["Module.require (module.js:353:17)","require (internal/module.js:12:17)","Object.<anonymous> (/var/task/todos/weather.js:4:17)","Module._compile (module.js:409:26)","Object.Module._extensions..js 

My code

'use strict';    const AWS = require('aws-sdk'); // eslint-disable-line import/no-extraneous-dependencies   var weather = require('Openweather-Node');    const dynamoDb = new AWS.DynamoDB.DocumentClient();    module.exports.weather = (event, context, callback) => {     const params = {       TableName: process.env.DYNAMODB_TABLE,       Key: {         id: event.pathParameters.id,       },     };      weather.setAPPID("mykey");     //set the culture     weather.setCulture("fr");     //set the forecast type     weather.setForecastType("daily");      const response = {       statusCode: 200,       body: "{test response}",     };     callback(null, response);             }; 
like image 456
Charith De Silva Avatar asked Mar 18 '17 23:03

Charith De Silva


People also ask

Can not find module index JS?

If you are getting the "Cannot find module" error when trying to run a local file, make sure that the path you passed to the node command points to a file that exists. For example, if you run node src/index. js , make sure that the path src/index. js points to an existing file.

What is serverless Webpack?

A Serverless Framework plugin to build your lambda functions with Webpack. This plugin is for you if you want to use the latest Javascript version with Babel; use custom resource loaders, optimize your packaged functions individually and much more!


1 Answers

Did you npm install in your working directory before doing your serverless deploy? The aws-sdk node module is available to all lambda functions, but for all other node dependencies you must install them so they will be packaged with your lambda when you deploy.

You may find this issue on the serverless repository helpful (https://github.com/serverless/serverless/issues/948).

like image 81
marcusmolchany Avatar answered Sep 21 '22 22:09

marcusmolchany