aws-lambda 找不到模块
aws-lambda Cannot find module问题的原因是文件和路径没有被正确地命名和引用。解决方法如下:
1. 将文件命名为exports.js。
2. 在文件中将handler命名为exports.handler。
3. 在lambda配置中设置handler为exports.handler。
4. 压缩文件时,只压缩文件夹的内容而不是整个文件夹,并将zip文件重命名为exports.zip。
实际文件的名称并不重要,关键是要完整地指定文件和路径。我的zip文件中有一个名为scripts的目录,在其中有几个包含exports.handler的文件。在Lambda控制台的Handler中,我指定为scripts/transforms.handler。
在使用AWS Lambda时,有一种可能的问题是,如果你使用PowerShell的Compress-Archive
命令创建的zip文件上传Lambda函数,会导致AWS将文件提取到一个扁平的树结构中(没有子目录),而文件名中带有反斜杠。
其中一个关于这个bug报告的评论中提供了使用命令行版本7zip
替代Compress-Archive
的说明。这对我来说起作用了。
因此,出现这个问题的原因是使用PowerShell的Compress-Archive
创建的zip文件存在一个bug,导致AWS在解压文件时将其提取到扁平的树结构中,并在文件名中包含反斜杠。
解决方法是使用命令行版本的7zip
来替代Compress-Archive
命令。这样可以避免AWS在解压时出现问题。
以上就是关于AWS Lambda中出现"Cannot find module"问题的原因和解决方法。