我正在使用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上都可以使用的模块路径?
答案 0 :(得分:0)
如果您使用的是npm,建议您在package.json
中创建一个shared
文件
然后,您只需在package.json
的{{1}}文件中使用相对路径就可以要求它:
function1
然后,您可以从 "name": "function1",
"dependencies": {
"shared": "file:../shared",
...
}
文件中删除package
逻辑,只需让程序包管理器处理即可。在打包要部署的应用程序时,无服务器框架将解析这些软件包。