AWS Lambda Function is returning “Cannot find module 'index'” yet the handler in the config is set to index

淺唱寂寞╮ 提交于 2019-12-20 08:56:49

问题


As my title explains I am getting the following error:

 {
  "errorMessage": "Cannot find module 'index'",
  "errorType": "Error",
  "stackTrace": [
    "Function.Module._resolveFilename (module.js:338:15)",
    "Function.Module._load (module.js:280:25)",
    "Module.require (module.js:364:17)",
    "require (module.js:380:17)"
  ]
}

I have tried both solutions provided in creating-a-lambda-function-in-aws-from-zip-file and simple-node-js-example-in-aws-lambda

My config currently looks like:

and my file structure is:

and my index.js handler function looks like :

exports.handler = function(event, context) {

What else could be causing this issue aside from what was stated in those two answers above? I have tried both solutions and I have also allocated more memory to the function just incase thats why it couldn't run.

EDIT - For the sake of trying, I created an even simpler version of my original code and it looked like this:

var Q = require('q');
var AWS = require('aws-sdk');
var validate = require('lambduh-validate');
var Lambda = new AWS.Lambda();
var S3 = new AWS.S3();




theHandler = function (event, context) {

  console.log =('nothing');

}

exports.handler = theHandler();

And yet still does not work with the same error?


回答1:


Try zipping and uploading the contents of the folder lambda-create-timelapse. Not the folder itself.




回答2:


If this was unclear for anyone else, here are the steps:

Step 1 Navigate to the folder of your project, and open that folder so that you are inside the folder:

Step 2 Select all of the images you want to upload into to Lambda:

Step 3 Right-click and compress the files you have selected:


This will give you a .zip file, which is the file you need to upload to Lambda:


There are a lot of ways to automate this, but this is the manual procedure.




回答3:


I ran into this problem a few times myself, and this indeed has to do with zipping the folder instead of just the contents like you're supposed to.

For those working from the terminal...

While INSIDE of the directory where the .js files are sitting, run the following:

zip -r ../zipname.zip *

The * is instructing the client to zip all the contents within this folder, ../zipname.zip is telling it to name the file zipname.zip and place it right outside of this current directory.




回答4:


I had the same problem sometime ago - I reformatted the code.

function lambdafunc1(event, context) {
...
...
...
}

exports.handler = lambdafunc1



回答5:


Correct Lambda function declaration can look like this:

var func = function(event, context) {
   ...
};

exports.handler = func;

You may have other syntax errors that prevent the index.js file from being properly ran. Try running your code locally using another file and using the index.js as your own module.




回答6:


The problem occurs when the handler cannot be located in the zip at first level. So anytime you see such error make sure that the file is at the first level in the exploded folder.

To fix this zip the files and not the folder that has the files.




回答7:


make sure in your handler following code added

exports.handler =  (event, context, callback) => {
...
}


来源:https://stackoverflow.com/questions/31664313/aws-lambda-function-is-returning-cannot-find-module-index-yet-the-handler-in

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!