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