NodeJS AWS lambda无法找到aws-sdk模块

4zcjmb1e  于 12个月前  发布在  Node.js
关注(0)|答案(1)|浏览(189)

为了减少无服务器包的大小,我试图将aws-sdk排除在部署之外。
我的印象是aws-sdk npm包默认包含在aws lambda运行时中。当我创建一个新函数时,我可以很好地控制台记录aws-sdk版本。
当我用serverless上传的较大的lambda执行时,它返回一个导入错误,因为找不到aws-sdk

"errorType": "Runtime.ImportModuleError",
  "errorMessage": "Error: Cannot find module 'aws-sdk'

lambda使用运行时nodejs12.x
如果你能帮忙的话,我将不胜感激。

sd2nnvve

sd2nnvve1#

我猜这个问题可能是针对无服务器框架如何打包和部署Lambda函数的。
以下是您可以采取的一些步骤,以排除故障并可能解决此问题:
1.检查您的无服务器配置:验证您的Serverless Framework配置(通常在serverless.yml中),以确保您没有意外地将aws-sdk模块从打包中排除。包含aws-sdk不需要特殊配置,因为它是由AWS Lambda为Node.js运行时自动提供的。
serverless.yml配置示例:

service: my-service
provider:
  name: aws
  runtime: nodejs12.x
functions:
  myFunction:
    handler: handler.myFunction

1.请检查您的部署包:运行Serverless Framework部署后,检查部署包的内容。您通常可以在.serverless目录中找到此软件包。确保aws-sdk模块存在于软件包中。
1.确保没有自定义重复:如果您已将自定义package.json显式添加到无服务器项目并指定依赖项,请确保未从自定义package.json文件中排除aws-sdk。如果你做了,删除它。
1.尝试不同的Node.js插件:如果问题仍然存在,您可以尝试更改Lambda函数的Node.js运行时版本。例如,将其更改为nodejs14.x或更高版本,以查看问题是否仍然存在。
1.更新Serverless Framework:确保您使用的是最新版本的Serverless Framework。旧版本可能与某些AWS功能或运行时存在兼容性问题。
1.检查本地覆盖:一些开发工具和插件允许本地覆盖依赖项。检查开发环境中是否存在可能导致此问题的任何本地重写。
在大多数情况下,aws-sdk应该在AWS Lambda Node.js运行时中默认可用,无需任何额外配置。

相关问题