gpt4 book ai didi

node.js - AWS SAM : Could not install from function as it does not contain a package. json 文件

转载 作者:行者123 更新时间:2023-12-04 04:16:05 25 4
gpt4 key购买 nike

我在 Visual Studio Code 中使用 AWS SAM 来设置许多 Node.js lambda 函数。我使用的是 Windows 10。我只是从 AWS SAM 开始,我已经使用命令面板生成了示例 Hello World 应用程序并且它可以工作。我通过添加第二个功能开始扩展应用程序,并重组目录结构以开始添加更多功能。我的目录结构现在如下所示:

|--my-app
| |--event-handlers
| | |--hello-world
| | | |--app.js
| | |--hello-world-2
| | | |--app.js
| |--package.json
| |--template.yml

当我跑 sam build我收到错误 无法从 ..\my-app\event-handlers\hello-world 安装,因为它不包含 package.json 文件 .如果我将 package.json 文件复制到每个子目录 hello-world 和 hello-world-2 中,那么 sam build工作正常。但是我需要为每个函数指定一个单独的 package.json 文件似乎不太正确,因为它违反了 DRY 原则。如果我这样构造它,我希望它应该使用根目录中的 package.json 来处理我的所有 lambda 函数。

我真的需要为每个 lambda 函数复制 package.json 文件吗?就定义多个 lambda 函数的 SAM 应用程序的目录结构而言,最佳实践是什么?为什么它不从我的根目录中提取我的 package.json 文件?

作为引用,我也包含了我的 template.yaml 文件的一部分
Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: event-handlers/hello-world/
Handler: app.lambdaHandler
Runtime: nodejs12.x
Events:
HelloWorld:
Type: Api
Properties:
Path: /hello
Method: get

HelloWorldFunction2:
Type: AWS::Serverless::Function
Properties:
CodeUri: event-handlers/hello-world-2/
Handler: app.lambdaHandler
Runtime: nodejs12.x
Events:
MyScheduledEvent:
Type: Schedule
Properties:
Schedule: rate(2 minutes)
Name: app.lambdaHandler
Description: Interval at which node function should be called
Enabled: True

最佳答案

每个 lambda 都使用自己的依赖堆栈进行部署。在我遇到的大多数情况下,这是一件好事。具有完全相同依赖项的两个 lambda 表达式表示其中一个函数中存在重复的功能或未使用的依赖项。

我遇到和你一样的错误,但因为我没有 package.json在根文件夹中。 hello-world使用 sam init 生成的示例项目根文件夹中也没有,但不知何故 sam build构建它没有问题。

关于node.js - AWS SAM : Could not install from function as it does not contain a package. json 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60672275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com