当我尝试使用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: "...",
});
然后是我的所有路线...
答案 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();
//....