Home > Enterprise >  How to properly Organize Firebase Functions in Groups?
How to properly Organize Firebase Functions in Groups?

Time:11-08

I am following This Guide to create a Functions project with multiple function files in NodeJS. while this is a good base, it does not show how to properly initiate a firebase app by using const app = admin.initializeApp() in a way that could be reused across the different files. my initial thought was to add the following in index.ts and import app as needed, but this raises a Maximum call stack size exceeded error.

import admin = require('firebase-admin');
export const app = admin.initializeApp();

While searching online I could only find some older posts that don't apply to current versions. can anyone provide a guideline for this?

CodePudding user response:

This looks like a circular dependency issue. You need to initialize Firebase Admin only once at the beginning of index.ts and import other services as needed in other files as shown below:

// 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()));
});
  • Related