aws-lambda找不到模块

从zipfile upload代码时,我在aws-lambda控制台中不断收到这个错误。 我已经尝试上传其他zip文件,他们正常工作。 .js文件在zip文件中被命名为“CreateThumbnail.js”。 我相信处理程序也正确命名为“CreateThumbnail.handler”。 node_modules子目录也被设置。 任何人有任何想法?

{ "errorMessage": "Cannot find module 'CreateThumbnail'", "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)" ] } 

我能够得到这个工作的方式是:

  1. 将文件命名为exports.js
  2. 在文件中命名处理程序exports.handler
  3. 将lambdaconfiguration中的处理程序设置为exports.handler
  4. 只压缩文件夹的内容,而不是文件夹本身(如上所述),并重命名zip文件exports.zip

好的,我自己也是这样做的,只要确保你创build的zip文件不会以.js文件结尾,因为AWS会解压你上传的文件并试图find一个.js文件你给的处理程序,如果它在一个文件夹内,它不会帮助你。

如果您的压缩文件不具有全球范围的读取权限,则可以显示此确切错误。 ( chmod -R ugo+r )。

在压缩之前检查文件权限。 不幸的是,AWS并没有强调这一点,它给许多人造成了很多的麻烦。

AWS Lambda使用文件的名称和处理函数的名称,因此,如果您在名为index.js的文件中定义了处理程序(如: exports.myHandler = function(event, context) ,那么您的处理程序是index.myHandler

我有一个自定义模块,我已经build立了在node_modules目录中的这个问题。 一切运行良好在我的Win10机器上testing,但上传时,我一直得到相同的“无法find模块”modulename“”错误。

事实certificate,我有一个错配; 下面是无法find的模块中的package.json行:

 "main": "./build/modulename.js", 

这里是实际的文件名:

 Modulename.js 

区分大小写; Windows不是,linux(也就是AWS)是。

这对我来说是一个简单的例子。

我越来越,不能创build索引。 在我的情况下,我的主要lambda文件与exports.handler必须被称为index.js

尝试调用你的主文件CreateThumbnail.js

文件名:
app.js
“app.js”中的Lambda函数:
exports.handler = function(event,context)…
Amazon Console上的Lambda Handler:
app.handler( {app} .js + exports。{handler} = app.handler

当你解压文件夹时,你应该看到:
app.js
node_modules