Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Heroku:Firebase可以';无法加载凭据_Javascript_Node.js_Firebase_Google Cloud Firestore_Firebase Admin - Fatal编程技术网

Javascript Heroku:Firebase可以';无法加载凭据

Javascript Heroku:Firebase可以';无法加载凭据,javascript,node.js,firebase,google-cloud-firestore,firebase-admin,Javascript,Node.js,Firebase,Google Cloud Firestore,Firebase Admin,问题摘要 我在Heroku上托管使用Firebase的Node.js服务器,当我尝试在Heroku上运行时,我得到下面的错误,它无法加载我的凭据 在我的本地机器上运行时,它工作得非常好。我正在使用firebase admin npm包来配置我的firebase连接/实例 以前有人遇到过这种情况吗?如果是这样的话,我会喜欢你的帮助 来自Heroku的错误 错误:无法加载默认凭据。浏览以了解更多信息 代码 const db = require("../../configs/firebaseConfi

问题摘要

我在Heroku上托管使用Firebase的Node.js服务器,当我尝试在Heroku上运行时,我得到下面的错误,它无法加载我的凭据

在我的本地机器上运行时,它工作得非常好。我正在使用firebase admin npm包来配置我的firebase连接/实例

以前有人遇到过这种情况吗?如果是这样的话,我会喜欢你的帮助

来自Heroku的错误

错误:无法加载默认凭据。浏览以了解更多信息

代码

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);
  }
}
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);
  }
}
这是我用来配置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);
  }
}
根据报告:

谷歌应用程序默认凭据可在任何谷歌基础设施上使用,如谷歌应用程序引擎和谷歌计算引擎

由于Heroku不是Google infrastructure,因此您必须使用中显示的其他选项之一初始化Admin SDK。

根据:

谷歌应用程序默认凭据可在任何谷歌基础设施上使用,如谷歌应用程序引擎和谷歌计算引擎

由于Heroku不是Google infrastructure,因此必须使用中显示的其他选项之一初始化AdminSDK