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

AWS-SDK in nodejs Lambda function cannot find endpoint-cache module

我一直在重构我们的一些 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-install 然后

$path = Get-Location
$thisProject = "$($path)\pathToProject\*"

Compress-Archive -Path $thisProject -DestinationPath thisProject.zip

在此问题上停留了一段时间,非常感谢任何帮助。

我 运行 几个月前就进入了这个问题。结果我需要确保包锁定文件包含在项目中并设置了 aws-sdk 版本

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

我认为 aws-sdk 已默认包含。

在 Lambda 函数中指定所需 SDK 的推荐方法是使用所需版本创建一个 lambda 层。看这里:https://aws.amazon.com/blogs/compute/working-with-aws-lambda-and-lambda-layers-in-aws-sam/

其实我也遇到了同样的问题。在我的例子中,原因在于 Compress-Archive 函数,运行 on Windows。如果我用 Compress-Archive 打包 lambda,则 Lambda 调用会失败并出现上述错误。但是,如果我解压缩 .zip 并使用常规 Windows "send to compressed directory" 打包 - 一切正常。我发现了一些 similar issue in PowerShell github space,这让我觉得这是一个常见问题。

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