首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS :无法从函数安装,因为它不包含package.json文件

AWS :无法从函数安装,因为它不包含package.json文件
EN

Stack Overflow用户
提问于 2020-03-13 14:29:16
回答 3查看 3.6K关注 0票数 4

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

代码语言:javascript
复制
|--my-app
|  |--event-handlers
|  |  |--hello-world
|  |  |  |--app.js
|  |  |--hello-world-2
|  |  |  |--app.js
|  |--package.json
|  |--template.yml

运行sam build时,无法从..\my-app\事件处理程序\hello-world安装错误,因为它不包含package.json文件。如果我将我的package.json文件复制到每个子目录hello-world和hello-world-2中,那么sam build可以正常工作。但是,我需要为每个函数指定一个单独的package.json文件似乎是不对的,因为它违背了枯燥的原则。我原以为如果我这样构造它的话,它应该使用根目录中的package.json来处理我所有的lambda函数。

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

作为参考,我还包括了我的template.yaml文件的一个部分

代码语言:javascript
复制
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
EN

回答 3

Stack Overflow用户

发布于 2020-03-25 21:00:11

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

我得到的错误与您相同,但因为根文件夹中没有package.json。用hello-world生成的sam init样例项目在根文件夹中也没有一个,但是sam build构建它没有问题。

票数 1
EN

Stack Overflow用户

发布于 2021-03-08 06:42:42

我也面临着同样的问题。

是什么修正了它正在将package.json向下移动一层,即

简而言之,为了正确构建SAM项目,您应该始终坚持下面的图表

票数 0
EN

Stack Overflow用户

发布于 2021-06-09 15:48:13

在我的例子中,我只需要从我的无服务器函数中删除CodeUri属性。尽管路径看起来是正确的,sam命令在没有上述消息的情况下失败了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60672275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档