0
votes

I'm running the same Cloud Function in 2 different GCP Projects (staging and production).

In the staging project, the Cloud Functions runs well but in the production it throws the following exception:

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)" 

The part that is causing the problem in production, is this:

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)
  });
}

Here is how I initiate the project and storage.

const {Storage} = require('@google-cloud/storage');
const storage = new Storage();

// Firebase related stuff
const functions = require('firebase-functions');
admin.initializeApp(functions.config().firebase);

Since I deploy the same function to both projects I don't understand why it is having issues in the production, and not staging.

What is usually causing the issue with default credentials? I followed the link in the trace but its not relevant to the actual problem.

Thanks.

1
Almost certainly not related, but how is FIRESTORE_BUCKET_NAME defined?robsiemb
Its a variable and works in staging env. I believe I solved it using @Doug answer.KasparTr

1 Answers

1
votes

If you want to use default credentials, you should initialize the Admin SDK like this, with no arguments:

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