繁体   English   中英

节点+快递服务器:Firebase 找不到默认应用

[英]Node + express server: Firebase can't find default app

我在我的节点服务器上为我的项目使用 firebase。 在我将所有内容都放在一个index.js文件中之前,我决定重构并给我的代码一些命令。 不幸的是,在这样做之后,我不断收到此错误:

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

每当我尝试运行firebase servernpm run serve

这是我的项目: index.js

const functions = require("firebase-functions");
const app = require("express")();

const { signup } = require("./handlers/users");

app.post("/signup-user", signup);

exports.api = functions.https.onRequest(app)

文件handlers/users如下:

const firebase = require("firebase");
const { db } = require("../util/admin");
const config = require("../util/config");

firebase.initializeApp(config);

exports.signup = (req, res) => {
  let userId;
  let token;
  const newUser = {
    email: req.body.email,
    password: req.body.password,
    confirmPassword: req.body.confirmPassword
  };

  // validate inputs

  firebase
    .auth()
    .createUserWithEmailAndPassword(newUser.email, newUser.password)
    .then(data => {
      userId = data.user.uid;
      return data.user.getIdToken();
    })
    .then(token => {
      token = token;

      const newUserRole = {
        email: newUser.email,
        userId,
        role: "user"
      };

      return db.collection("users").add(newUserRole);
    })
    .then(data => {
      return res.status(201).json({ token });
    })
    .catch(err => {
      console.error(err);
      if (err.code === "auth/email-already-in-use") {
        return res.status(400).json({ email: "Email already in use" });
      } else {
        return res.status(500).json({ error: err.code });
      }
    });
};

最后,文件admin如下:

const admin = require("firebase-admin");
const serviceAccount = require("../../account.json");

const db = admin.firestore();

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

module.exports = { admin, db }

我怎样才能解决这个问题?

最终我发现了问题。 在文件admin.js ,我在初始化应用程序本身之前初始化了 firestore:

const admin = require("firebase-admin");
const serviceAccount = require("../../account.json");

// This line should be moved after initializeApp`:
// const db = admin.firestore();

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

const db = admin.firestore();

module.exports = { admin, db }

现在一切都按预期工作!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM