【问题标题】:Serverless packaging issue无服务器打包问题
【发布时间】:2019-10-24 00:12:39
【问题描述】:

我正在使用 NodeJS 10 创建多个 lambda。许多函数都有共享代码,包含在每个函数中,所以整体结构如下:

project/
  function1/
    api.js
    serverless.yml    
  function2/
    api.js
    serverless.yml    
  function3/
    api.js
    serverless.yml    
  shared/
    http/
      index.js
      node_modules/
    intercom/
      index.js
      node_modules/      

每个serverless.yml 都包含如下函数声明:

functions:
  test-database-connection:
    package:
      include:
        - ../shared/http/**
        - ../shared/intercom/**
        - ./node_modules/**
        - ./api.js
    handler: api.connectivityDatabase
    events:
      - http:
          path: /api/test/database
          method: post

在开发过程中它可以工作,也可以离线工作,但打包后它变得无法使用,因为包更改了shared文件夹的相对路径,例如:

package.zip/
  shared/
    http/
      ...
    intercom/
      ...
  api.js

是否可以在包中保持与开发期间相同的结构?或者任何其他方法来修复在本地和 AWS 上都可以使用的模块路径?

【问题讨论】:

    标签: serverless-framework


    【解决方案1】:

    如果你使用 npm,我建议在 shared 中创建一个 package.json 文件

    然后你可以简单地在function1package.json 文件中使用相对路径:

      "name": "function1",
      "dependencies": {
        "shared": "file:../shared",
        ...
      }
    

    然后您可以从serverless.yml 文件中删除package 逻辑,并让包管理器处理这些事情。无服务器框架将在打包您的应用程序以进行部署时解析这些包。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-11
      • 2019-04-30
      • 2018-03-18
      • 1970-01-01
      • 2019-06-22
      • 2018-11-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多