AWS Lambda 函数返回 "Cannot find module 'index'" 但配置中的处理程序设置为索引

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

如我的标题所述,我收到以下错误:

 {
  "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)"
  ]
}

我已经尝试了 and

中提供的两种解决方案

我的配置目前看起来像:

我的文件结构是:

我的 index.js 处理函数看起来像:

exports.handler = function(event, context) {

除了上述两个答案中所述的内容之外,还有什么可能导致此问题?我已经尝试了这两种解决方案,并且我还为该函数分配了更多内存,以防万一它不能 运行.

编辑 - 为了尝试,我创建了一个更简单的原始代码版本,它看起来像这样:

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();

但仍然无法正常工作,出现同样的错误?

前段时间我遇到了同样的问题 - 我重新格式化了代码。

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

exports.handler = lambdafunc1

正确的 Lambda 函数声明可以如下所示:

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

exports.handler = func;

您可能有其他语法错误导致 index.js 文件无法正确 运行。使用另一个文件并使用 index.js 作为您自己的模块,在本地尝试 运行 您的代码。

尝试压缩并上传文件夹 lambda-create-timelapse 的内容。不是文件夹本身。

如果其他人不清楚,请按以下步骤操作:

步骤 1 导航到项目的文件夹,然后打开该文件夹,以便您位于该文件夹内:

步骤 2 Select 您要上传到 Lambda 的所有图像:

步骤 3 Right-click 并压缩您选择的文件:


这将为您提供一个 .zip 文件,这是您需要上传到 Lambda 的文件:


有很多方法可以自动执行此操作,但这是手动过程。

我自己 运行 遇到过这个问题几次,这确实与压缩文件夹有关,而不是像您应该的那样只压缩内容。

对于那些在终端工作的人...

在 .js 文件所在目录的 INSIDE 中,运行 以下内容:

zip -r ../zipname.zip *

* 指示客户端压缩此文件夹中的所有内容,../zipname.zip 指示客户端将文件命名为 zipname.zip 并将其放在当前目录之外.

当无法在第一级 zip 中找到处理程序时会出现问题。因此,无论何时您看到此类错误,请确保该文件位于展开文件夹中的第一层。

要修复此 zip 文件而不是包含文件的文件夹。

确保在您的处理程序中添加以下代码

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