问题描述
有没有办法通过 cli 命令 (firebase deploy --only functions
) 使用这种架构来拥有 Firebase/Google 云功能?
预期:
.
└── functions/
├── function_using_axios/
│ ├── node_modules/
│ ├── package.json
│ └── index.js
└── function_using_moment/
├── node_modules/
├── package.json
└── index.js
目前,我的 archi 是这样的:
.
└── functions/
├── node_modules/
├── package.json
├── index.js
├── function_using_axios.js
└── function_using_moment.js
事实是,对于某些功能,我有很多无用的包依赖项。 并且增加了冷启动时间。
我知道这可以通过 Web UI 实现。
WEB UI 示例:
一包一功能
我当前的 Archi 在 WEB UI 上看到,一个包所有功能:
有什么想法吗?
谢谢。
解决方法
当通过 Firebase 部署时,只能有一个 index.js
文件,尽管 gcloud
在这方面可能有所不同。
为确保您只加载每个函数需要的依赖项,请将每个依赖项的 require
移动到需要它的函数中:
exports.usageStats = functions.https.onRequest((request,response) => {
const module = require('your-dependency');
// ...
});
另见:
- organizing functions 上的 Firebase 文档,它展示了一种在多个文件上使用函数的方法(尽管您仍然需要在 index.js 中导入/导出它们)。