我一直在重构一些我们的AWS lambda函数,而在这个最新版本中,我遇到以下错误:
"Payload": "{\"errorMessage\":\"Cannot find module '../vendor/endpoint-cache'\",\"errorType\":\"Error\",\"stackTrace\":[\"Function.Module._load (module.js:474:25)\",\"Module.require (module.js:596:17)\",\"require (internal/module.js:11:18)\",\"Object.<anonymous> (/var/task/node_modules/aws-sdk/lib/core.js:76:18)\",\"Module._compile (module.js:652:30)\",\"Object.Module._extensions..js (module.js:663:10)\",\"Module.load (module.js:565:32)\",\"tryModuleLoad (module.js:505:12)\",\"Function.Module._load (module.js:497:3)\"]}"
此模块在aws-sdk节点模块的vendor文件夹中。 我检查了部署工件,以确保该文件夹存在,并且尝试将其降级到以前使用的旧版本的aws-sdk。
package.json中的依赖项:
"dependencies": {
"aws-sdk": "^2.59.0",
"moment": "^2.22.2",
"underscore": "^1.8.3"
},
构建服务器先运行npm-install,然后运行
$path = Get-Location
$thisProject = "$($path)\pathToProject\*"
Compress-Archive -Path $thisProject -DestinationPath thisProject.zip
在此方面停留了一段时间,因此非常感谢您的帮助。
答案 0 :(得分:4)
几个月前,我遇到了这个问题。原来,我需要确保项目中包括了软件包锁定文件,并且设置了aws-sdk版本
答案 1 :(得分:2)
昨天我遇到了这个问题,我通过删除aws-sdk
中的package.json
并删除并重新安装node_modules
文件夹来解决了这个问题。希望这能解决您的问题。
我认为默认情况下已经包含aws-sdk
。
答案 2 :(得分:0)
在Lambda函数中指定所需SDK的推荐方法是使用所需版本创建lambda层。看到这里:https://aws.amazon.com/blogs/compute/working-with-aws-lambda-and-lambda-layers-in-aws-sam/
答案 3 :(得分:0)
我实际上遇到了同样的问题。就我而言,原因是在Windows上运行的Compress-Archive
函数中。如果我将lambda与Compress-Archive
一起打包,则Lambda调用将失败,并出现上述问题。但是,如果我解压缩.zip
并与常规Windows一起“发送到压缩目录”,则一切正常。我发现了一些similar issue in PowerShell github space,这让我觉得这是一个普遍的问题。
该问题已在PowerShell Core的最新版本之一中解决(不确定经典PowerShell)。我不确定是否可以解决此问题的确切版本,但是它在v.6.1和v.6.2.2中已经消失了。