如何使用管理员权限在firebase中初始化App

时间:2020-05-03 11:55:34

标签: javascript node.js firebase express google-cloud-functions

当我尝试使用firebase初始化应用程序时出现此错误: “默认的Firebase应用程序不存在。请确保在使用任何Firebase服务之前先调用initializeApp()。”

这是我的脚本:

const functions = require("firebase-functions");
const admin = require("firebase-admin");
const servicesAccount = require("./admin.json");

const express = require("express");
const app = express();

const firebase = require("firebase");
const firebaseConfig = {...};

const database = admin.firestore();

firebase.initializeApp(firebaseConfig);

admin.initializeApp({
  credential: admin.credential.cert(servicesAccount),
  databaseURL: "...",
});

然后是我的所有路线...

2 个答案:

答案 0 :(得分:2)

您应该在Admin对象上的其他任何方法之前呼叫initializeApp()。像这样更改语句的顺序:

admin.initializeApp({
  credential: admin.credential.cert(servicesAccount),
  databaseURL: "...",
});

const database = admin.firestore();

请注意,admin.firestore()位于initializeApp()之后。

答案 1 :(得分:1)

通常,如果您想从Cloud Function与Firebase后端服务(Firestore,实时数据库,Cloud Storage等)进行交互,则只需初始化Admin SDK {{3 }}

在这种情况下,SDK使用Google Application Default Credentials和 从FIREBASE_CONFIG环境变量读取选项。 ... FIREBASE_CONFIG环境变量自动包含在 针对通过Firebase功能部署的Firebase功能的Cloud Functions Firebase CLI

还要查看Cloud Functions文档的以下部分:with no parameters


另一方面,您执行以下操作

const firebaseConfig = {...};
firebase.initializeApp(firebaseConfig);

当您想在Web应用程序中使用 Firebase JavaScript SDK 或作为客户端(例如,在Node.js桌面或IoT应用程序中)作为最终用户访问的客户端时。


因此,总而言之,您应该执行以下操作:

const functions = require("firebase-functions");
const admin = require("firebase-admin");

admin.initializeApp();

const express = require("express");
const app = express();

const database = admin.firestore();

//....