我正在2个不同的GCP项目(阶段和生产)中运行相同的Cloud Function。
在登台项目中,Cloud Functions运行良好,但在生产中会引发以下异常:
Error: Could not load the default credentials. Browse to https://cloud.google.com/docs/authentication/getting-started for more information.
at GoogleAuth.getApplicationDefaultAsync (/srv/node_modules/@google-cloud/common/node_modules/google-auth-library/build/src/auth/googleauth.js:161:19)
at <anonymous>
at process._tickDomainCallback (internal/process/next_tick.js:229:7)"
在生产中导致问题的部分是:
function saveContentToBucket(contents, destination, bucket, gzip){
const bucket = storage.bucket(FIRESTORE_BUCKET_NAME);
const file = bucket.file(destination);
file.save(JSON.stringify(contents), function(err) {
if(err) console.log("saveContentToBucket | err:", err)
});
}
这是我启动项目和存储的方式。
const {Storage} = require('@google-cloud/storage');
const storage = new Storage();
// Firebase related stuff
const functions = require('firebase-functions');
admin.initializeApp(functions.config().firebase);
由于我在两个项目中都部署了相同的功能,所以我不明白为什么它在生产中会出现问题,而不是暂存。
通常是什么导致默认凭据出现问题?我遵循了跟踪中的链接,但与实际问题无关。
谢谢。
如果要使用默认凭据,则应这样初始化Admin SDK,不带任何参数:
const admin = require('firebase-admin');
admin.initializeApp();