Heroku:Firebase无法加载凭据

时间:2019-08-27 21:05:46

标签: javascript node.js firebase google-cloud-firestore firebase-admin

问题摘要

我在Heroku上托管使用Firebase的Node.js服务器,当我尝试在Heroku上运行时,出现以下错误,提示它无法加载我的凭据。

在我的本地计算机上运行时,它可以完美运行。我正在使用firebase-admin npm软件包来配置我的firebase连接/实例。

以前有人遇到过吗?如果是这样,我很乐意您的帮助!

Heroku错误

错误:无法加载默认凭据。浏览至https://cloud.google.com/docs/authentication/getting-started了解更多信息。

代码

Firebase管理员配置文件

这是我用来配置Firebase管理实例的文件

const admin = require('firebase-admin');

admin.initializeApp({
  credential: admin.credential.applicationDefault(),
  databaseURL: "https://esports-competition-2.firebaseio.com"
}); //this also allows me to use Google OAuth2 refresh token

const db = admin.firestore();

module.exports = db;

将数据保存到Firebase的功能

const db = require("../../configs/firebaseConfig");

async function firestorePush(userId, eventType, data) {
  try {
    //read database
    //if userId contains eventType singleEntry then remove from database
    const timeStamp = new Date();
    userId = userId.toString();
    const userDoc = db.collection("pushData").doc(userId);
    const pushData = await userDoc.set(
      {
        event: {
          eventType,
          data,
          timeStamp
        }
      },
      { merge: true }
    );
    console.log("Document set in FireStore", pushData);
  } catch (err) {
    console.log("errpr pushing to firebase", err);
  }
}

1 个答案:

答案 0 :(得分:1)

根据documentation on admin.credential.applicationDefault()

  

任何Google基础架构(例如Google App Engine和Google Compute Engine)上都可以使用Google Application Default Credentials。

由于Heroku不是Google基础架构,因此您必须使用documentation on initializing the SDK中显示的其他选项之一来初始化Admin SDK。