默认 Firebase 应用不存在。确保在使用任何 Firebase 服务之前调用 initializeApp()。在 FirebaseAppError

Bob*_*b.B 17 node.js firebase typescript google-cloud-functions

我正在学习使用 Firebase 云函数,我正在关注 Firebase 的官方教程视频学习 JavaScript 承诺(Pt.1)

当我运行本地服务器并转到 HTTP 链接时,我得到

错误:默认 Firebase 应用不存在。确保在使用任何 Firebase 服务之前调用 initializeApp()。

我试图找到解决方案,但找不到任何地方。我有一些模糊相关的问题,但对于 javascript,我的代码是打字稿。我确实在 .js 和 .ts 文件中添加了建议的语法

admin.initializeApp(functions.config().firebase);
Run Code Online (Sandbox Code Playgroud)

但是,我仍然遇到相同的错误

这是我的 index.tcs。

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';

// Start writing Firebase Functions
// https://firebase.google.com/docs/functions/typescript

export const getVoucher = functions.https.onRequest((request, response) => {
    const promise = admin.firestore().doc('/voucher/Eg2AtnGmKmX8Y0vBZiBG').get()
    const p2 = promise.then(snapshot=>{
        const data = snapshot.data()
        response.send(data)
    })
    p2.catch(error => {
        //Handlle the error
        console.log('error: '+error)
        response.status(500).send(error)
    })
});
Run Code Online (Sandbox Code Playgroud)

该功能在部署到 firebase 时按预期工作。

Dou*_*son 20

您应该只admin.initializeApp()在代码的全局范围内调用。不要传递任何参数来接受默认服务帐号,该帐号应该有权读取和写入您的 Cloud Firestore 数据库。

  • 不在函数或其他带大括号的块内的任何位置,通常不缩进。 (2认同)

小智 10

忠告,即使您正确初始化了应用程序,有时也会出现这种情况,此时只需检查您的 db 实例是否放置在函数中而不是全局函数中。

#nodejs

var db = admin.database();//inside function
Run Code Online (Sandbox Code Playgroud)


小智 6

This might sound like crazy, But I had the same issue. Then I've changed my "admin.initializeApp();" place like below. Then it works.

const functions = require('firebase-functions');
const admin = require('firebase-admin');
const express = require('express');
const app = express();
//put here.
admin.initializeApp();

const db = admin.firestore();

const firebaseConfig = {
// config data
};

const firebase = require('firebase');

firebase.initializeApp(firebaseConfig);
Run Code Online (Sandbox Code Playgroud)