在Node.js Lambda函数中,AWS-SDK无法找到endpoint-cache模块。

7

我最近在重构我们的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

我卡在这个问题上一段时间了,非常感谢任何帮助。


1
临时解决方法:使用早于v2.352.0版本的版本。我也遇到了同样的问题。我已经将问题缩小到aws-sdk引用了在https://github.com/aws/aws-sdk-js/releases/tag/v2.352.0发布的新功能`endpoint-cache`,该变更在此行https://github.com/aws/aws-sdk-js/blob/cbef86432191d1501075d71744385c273c4bbc3a/lib/core.js#L76中找到。AWS Lambda的Node 8.10似乎找不到它。 - Jonn
4个回答

4

我几个月前遇到了这个问题。结果发现需要确保将包锁文件包含在项目中,并设置aws-sdk版本。


还需要确保它正在更新正确的版本 :) - Ben

3

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

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


2
我曾经遇到过同样的问题。在我的情况下,原因是在Windows上运行的Compress-Archive函数。如果我使用Compress-Archive打包lambda,那么Lambda调用将失败并出现上述错误。但是,如果我解压缩.zip并使用常规的Windows“发送到压缩目录”进行打包,则一切正常。我在PowerShell github空间中找到了一些类似的问题,这使我认为这是一个普遍存在的问题。
这个问题在PowerShell Core的最新版本中得到了解决(不确定经典PowerShell是否也有)。我不确定哪个确切的版本解决了这个问题,但它在v.6.1中存在,在v.6.2.2中已经消失了。

1
你是个英雄...我一直在使用多个版本的PowerShell。确保我运行的是7.0核心版本解决了问题。谢谢。 - mfperzel

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接