Serverless framework 无服务器包装问题

Serverless framework 无服务器包装问题,serverless-framework,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 no

我使用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
在开发过程中,它可以正常工作,也可以脱机工作,但打包后它就变得不可用了,因为包更改了
共享的
文件夹的相对路径,如:

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

在开发过程中,包中是否可以保持相同的结构?或者以任何其他方式修复将在本地和AWS上工作的模块路径?

如果您使用npm,我建议在
共享中创建
package.json
文件

然后,您只需在
function1
中的
package.json
文件中使用相对路径即可:

  "name": "function1",
  "dependencies": {
    "shared": "file:../shared",
    ...
  }
然后,您可以从
serverless.yml
文件中删除
逻辑,让包管理器处理事情。无服务器框架将在打包应用程序进行部署时解析这些包