我按照这个指南在NodeJS中创建一个包含多个函数文件的函数项目。虽然这是一个很好的基础,但它没有展示如何通过使用const app = admin.initializeApp()来正确启动firebase应用程序。以一种可以跨不同文件重用的方式。我最初的想法是在索引中添加以下内容。但是这会引发一个最大调用堆栈大小超过错误。
import admin = require('firebase-admin');
export const app = admin.initializeApp();
在网上搜索时,我只能找到一些不适用于当前版本的旧帖子。有人能提供一个指导吗?
这看起来像是一个循环依赖问题。您只需要在index.ts
开头初始化Firebase Admin一次,并根据需要在其他文件中导入其他服务,如下所示:
// index.ts
// Don't export anything from this file.
import { initializeApp } from "firebase-admin/app";
initializeApp({
databaseURL: "<DB_URL>",
storageBucket: "<BUCKET>.appspot.com",
});
export * from "./metric";
// metric.ts
import { https } from "firebase-functions/v1";
import { getFirestore } from "firebase-admin/firestore";
const db = getFirestore();
export const test = https.onRequest(async (req, res) => {
const metricData = await db.collection("metrics").get();
res.json(metricData.docs.map((doc) => doc.data()));
});