我在 Firebase 的帆中不断收到此错误

时间:2021-03-25 07:00:25

标签: node.js firebase sails.js

我有一个风帆和节点应用程序,我正在使用 firebase 在该应用程序上推送通知 我一直遇到的问题是

The default Firebase app does not exist. Make sure you call initializeApp() before using any of the Firebase services

我在 app.js 文件中的代码

  sails = require('sails');
  rc = require('sails/accessible/rc');
    const admin = require('firebase-admin');
    const serviceAccount = require('./serviceAccountKey.json');
    admin.initializeApp({
      credential: admin.credential.cert(serviceAccount),
      databaseURL: "my url"
    });
    // Start server
  sails.lift(rc('sails'));

我已经通过使用 setTimeOut 来延迟调用特定的 require 文件,为依赖于该服务的文件尝试了一些解决方案,这实际上在某些情况下对我有帮助,但我想要一个解决方案,这样我就不必做这项工作周围

1 个答案:

答案 0 :(得分:0)

为了初始化您的 firebase 管理员,我更喜欢将它添加到 config/bootstrap.js 文件作为全局变量(没有 const 或 var),这样您就可以在整个应用程序中访问它

注意一旦应用程序启动,sails 就会运行引导程序文件,因此您可以在每次启动项目时编写任何想要运行的代码

示例

admin = require('firebase-admin');
serviceAccount = require('./serviceAccountKey.json');
admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "my url"
});

您还可以定义 firestore、auth、bucket 等,

auth = admin.auth();
bucket = admin.storage().bucket();

db = admin.firestore();
db.settings({ timestampsInSnapshots: true });

现在在您的任何控制器中,您都可以使用 firestore

await db.collection('user').doc('userId').set({})