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) => {
...
}
如我的标题所述,我收到以下错误:
{
"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)"
]
}
我已经尝试了
我的配置目前看起来像:
我的文件结构是:
我的 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) => {
...
}