【问题标题】:AWS Lambda Function is returning "Cannot find module 'index'" yet the handler in the config is set to indexAWS Lambda 函数返回“找不到模块‘索引’”,但配置中的处理程序设置为索引
【发布时间】:2019-12-01 04:30:49
【问题描述】:

正如我的标题所解释的,我收到以下错误:

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

我已经尝试了creating-a-lambda-function-in-aws-from-zip-filesimple-node-js-example-in-aws-lambda 提供的两种解决方案

我的配置目前看起来像:

我的文件结构是:

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

但仍然无法解决同样的错误?

【问题讨论】:

  • 遇到完全相同的问题......在 lamdba 引导期间出现错误 Cannot find module '/var/task/index'。感谢您提出问题!

标签: javascript node.js amazon-web-services aws-lambda


【解决方案1】:

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

【讨论】:

  • 我不确定这是否真的回答了这个问题。也许您可以提供更多细节(至于为什么这是配置问题而不是编码问题)
  • 这实际上是我自己最终使用的解决方案。亚马逊怎么这么说这很烦人,所以不容易意识到!
  • 正如官方文档所说,在页面末尾可以看到重要提示:您压缩的是文件夹内容,而不是文件夹本身docs.aws.amazon.com/lambda/latest/dg/…
【解决方案2】:

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

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

第 2 步 选择您要上传到 Lambda 的所有图像:

第 3 步 右键单击并压缩您选择的文件:


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


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

【讨论】:

    【解决方案3】:

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

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

    在 .js 文件所在的目录内部时,运行以下命令:

    zip -r ../zipname.zip *

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

    【讨论】:

    • 赞成提供有关正确压缩文件方式的明确说明。
    【解决方案4】:

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

    function lambdafunc1(event, context) {
    ...
    ...
    ...
    }
    
    exports.handler = lambdafunc1
    

    【讨论】:

      【解决方案5】:

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

      要修复此压缩文件,而不是包含文件的文件夹。

      【讨论】:

        【解决方案6】:

        正确的Lambda函数声明可以是这样的:

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

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

        【讨论】:

        • 对我不起作用,我有其他 lambda 函数在没有此更改的情况下工作,所以我不确定这是问题..
        • 您需要提供更多信息。您所描述的可能是非常琐碎的事情,也可能是其他错误。
        【解决方案7】:

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

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

        【讨论】:

          猜你喜欢
          • 2016-09-04
          • 2021-09-13
          • 1970-01-01
          • 1970-01-01
          • 2023-03-19
          • 2018-06-11
          • 1970-01-01
          • 1970-01-01
          • 2019-04-27
          相关资源
          最近更新 更多