问题摘要
我在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);
}
}
答案 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。