nodejs Lambda 函数中的 AWS-SDK 找不到端点缓存模块



我一直在重构我们的一些 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 节点模块的供应商文件夹中。我检查了部署工件以确保该文件夹存在,并尝试降级到以前使用的旧版本的 aws-sdk。

package.json 中的依赖项:

"dependencies": {
    "aws-sdk": "^2.59.0",
    "moment": "^2.22.2",
    "underscore": "^1.8.3"
  },

构建服务器运行 npm 安装,然后

$path = Get-Location
$thisProject = "$($path)pathToProject*"
Compress-Archive -Path $thisProject -DestinationPath thisProject.zip

已经卡了一段时间了,所以任何帮助都非常感谢。

几个月

前我遇到了这个问题。事实证明,我需要确保包锁定文件包含在项目中并设置了aws-sdk版本

我昨天遇到了这个问题,我通过删除package.json中的aws-sdk并删除+重新安装我的node_modules文件夹来解决它。希望这能解决您的问题。

我认为默认情况下已经包含aws-sdk

我实际上遇到了同样的问题。就我而言,原因是在Windows上运行的Compress-Archive功能。如果我将 lambda 与 Compress-Archive 打包在一起,那么 Lambda 调用将失败并出现上述错误。但是,如果我解压缩.zip并使用常规Windows打包"发送到压缩目录" - 一切正常。我在PowerShell github空间中发现了一些类似的问题,这让我认为这是一个常见问题。

该问题已在最新版本的PowerShell Core之一中修复(不确定经典PowerShell(。我不确定解决此问题的确切版本,但它在 v.6.1 中存在,而在 v.6.2.2 中它已经消失了。

在 Lambda 函数中指定所需的开发工具包的建议方法是使用所需版本创建 lambda 层。看这里: https://aws.amazon.com/blogs/compute/working-with-aws-lambda-and-lambda-layers-in-aws-sam/

最新更新