【问题标题】:Testing module that requires a module from a layer in AWS Lambda需要来自 AWS Lambda 中的层的模块的测试模块
【发布时间】:2020-02-25 18:10:39
【问题描述】:

所以,我在无服务器框架节点 JS 项目中使用了层。我将所有常用的 npm 包添加到一个层,因为我不希望每个 Lambda 函数都有巨大的包。

问题是在(本地)运行单元测试时,它找不到这些模块。

有没有办法解决这个问题?

【问题讨论】:

  • 您是如何上传 zip 层文件的?请描述一下您的 zip 结构?
  • @AssaelAzran 我不上传 zip 文件。无服务器框架为您完成所有这些工作,您只需键入命令“无服务器部署”。但是该层有所有代码所在的 nodejs 文件夹。我的代码可以看到图层,这不是我的问题。问题是在运行单元测试时,它在本地看不到它们。除此之外,项目中有一个图层文件夹,我放置了所有图层。图层是一个单独的项目。 AWS 为您管理 lambda 和层之间的依赖关系
  • 再次,该层工作。只是在运行单元测试时,它看不到它们

标签: node.js aws-lambda jestjs serverless-framework aws-lambda-layers


【解决方案1】:

尝试以下方法:

  1. 将 package.json 文件添加到包含所有依赖项的项目中
  2. 安装依赖项,以便在本地拥有它们
  3. 在 Serverless 框架中使用 Exclude 选项,这样最终的包就不会包含 node_modules 目录:
package:
  exclude:
    - node_modules/**

【讨论】:

    【解决方案2】:

    Bar 的回答很好,但我也认为我可以使用 --save-dev 标志安装所有依赖项,就是这样!

    【讨论】:

      猜你喜欢
      • 2021-10-26
      • 2020-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 2021-09-02
      相关资源
      最近更新 更多