无服务器打包问题

时间:2019-10-18 11:42:03

标签: serverless-framework

我正在使用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上都可以使用的模块路径?

1 个答案:

答案 0 :(得分:0)

如果您使用的是npm,建议您在package.json中创建一个shared文件

然后,您只需在package.json的{​​{1}}文件中使用相对路径就可以要求它:

function1

然后,您可以从 "name": "function1", "dependencies": { "shared": "file:../shared", ... } 文件中删除package逻辑,只需让程序包管理器处理即可。在打包要部署的应用程序时,无服务器框架将解析这些软件包。