【问题标题】:FirebaseError: Firebase: No Firebase App '[DEFAULT]' has been created - call Firebase App.initializeApp() (app/no-app). at appFirebaseError:Firebase:未创建 Firebase 应用“[DEFAULT]” - 调用 Firebase App.initializeApp() (app/no-app)。在应用程序
【发布时间】:2021-09-06 00:24:16
【问题描述】:

我正在学习如何在 Ionic + Angular 项目中使用 Firebase 函数。

我想创建我的自定义函数,它将获取所有游戏(一个集合)并按名为“count”的属性的顺序返回一个包含这些游戏的数组。我的第一步是获取所有游戏并展示以了解结构。

不幸的是,当我运行命令 firebase emulators:start 并访问我的函数“getMostPlayedGames”时,会出现此错误:

FirebaseError: Firebase: No Firebase App '[DEFAULT]' has been created call Firebase App.initializeApp() (app/no-app). at app

这是我的index.ts

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

admin.initializeApp();

export const helloWorld = functions.https.onRequest((req, res) => {
    res.send('Hello world');
});

export const deleteExpiredSessions = functions.https.onRequest((req, res) => {
    functions.logger.info('Automatic cleaning - Delete expired sessions from Database', { structuredData: true });
    res.send('Automatic cleaning - Delete expired sessions from database');
});

export const getMostPlayedGames = functions.https.onRequest((req, res) => {
    const db = firebase.firestore();
    const games = db.collection('games');
    console.log(games);
    functions.logger.info('Get all games', { structuredData: true });
    res.send(games);
});

“HelloWorld”功能有效。

【问题讨论】:

    标签: node.js angular typescript google-cloud-firestore google-cloud-functions


    【解决方案1】:

    在 Cloud Function 中,如果您想与 Firebase 服务(例如 Firestore)进行交互,您需要使用 Admin SDK

    因此,以下更改(请参阅 cmets // ...)应该可以解决问题(未经测试)

    import * as functions from 'firebase-functions';
    import * as admin from 'firebase-admin';
    
    // import firebase from 'firebase';    COMMENTED OUT
    
    admin.initializeApp();
    
    export const helloWorld = functions.https.onRequest((req, res) => {
        res.send('Hello world');
    });
    
    export const deleteExpiredSessions = functions.https.onRequest((req, res) => {
        functions.logger.info('Automatic cleaning - Delete expired sessions from Database', { structuredData: true });
        res.send('Automatic cleaning - Delete expired sessions from database');
    });
    
    export const getMostPlayedGames = functions.https.onRequest((req, res) => {
        const db = admin.firestore();   // CHANGED
        const games = db.collection('games');
        console.log(games);
        functions.logger.info('Get all games', { structuredData: true });
        res.send(games);
    });
    

    【讨论】:

    猜你喜欢
    • 2021-12-15
    • 2020-12-11
    • 2023-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    • 2021-07-13
    • 2021-06-12
    相关资源
    最近更新 更多