Firebase deploy Error: Could not load the default credentials

Viewed 67

Working fine in firebase serve. But, when I deploy my function, I get an error like this--

PS C:\Rk\firebase_function\m2d> firebase deploy

=== Deploying to 'mtdbk-01'...

i  deploying firestore, functions
i  firestore: reading indexes from firestore.indexes.json...
i  cloud.firestore: checking firestore.rules for compilation errors...
+  cloud.firestore: rules file firestore.rules compiled successfully
i  functions: ensuring required API cloudfunctions.googleapis.com is enabled...
i  functions: ensuring required API cloudbuild.googleapis.com is enabled...
+  functions: required API cloudfunctions.googleapis.com is enabled
+  functions: required API cloudbuild.googleapis.com is enabled
i  functions: preparing codebase default for deployment
node:internal/process/promises:279
            triggerUncaughtException(err, true /* fromPromise */);
            ^

Error: Could not load the default credentials. Browse to https://cloud.google.com/docs/authentication/getting-started for more information.
    at GoogleAuth.getApplicationDefaultAsync (C:\Rk\firebase_function\m2d\functions\node_modules\google-auth-library\build\src\auth\googleauth.js:183:19)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async GoogleAuth.getClient (C:\Rk\firebase_function\m2d\functions\node_modules\google-auth-library\build\src\auth\googleauth.js:565:17)  
    at async GrpcClient._getCredentials (C:\Rk\firebase_function\m2d\functions\node_modules\google-gax\build\src\grpc.js:145:24)
    at async GrpcClient.createStub (C:\Rk\firebase_function\m2d\functions\node_modules\google-gax\build\src\grpc.js:308:23)
Caused by: Error
    at Firestore.getAll (C:\Rk\firebase_function\m2d\functions\node_modules\firebase-admin\node_modules\@google-cloud\firestore\build\src\index.js:902:23)
    at DocumentReference.get (C:\Rk\firebase_function\m2d\functions\node_modules\firebase-admin\node_modules\@google-cloud\firestore\build\src\reference.js:211:32)
    at refresh2D (C:\Rk\firebase_function\m2d\functions\index.js:22:51)
    at Object.<anonymous> (C:\Rk\firebase_function\m2d\functions\index.js:25:1)
    at Module._compile (node:internal/modules/cjs/loader:1105:14)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:102:18)

My node version is v16.15.0

My npm version is 8.5.5

I have already call gcloud auth application-default login

PS C:\Rk\firebase_function\m2d> gcloud auth application-default login     

    https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=764086051850-6qr4p6gpi6hn506pt8ejuq83di341hur.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A8085%2F&scope=openid+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fsqlservice.login+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Faccounts.reauth&state=Vyo2yKpWjYz8DWvk1ZwP1ZjPEWYy&access_type=offline&code_challenge=ugR8ChWAdcJCA0Li-1PgjFJphdLMlaUGG3wPJhZc4I&code_challenge_method=S256


Credentials saved to file: [C:\Users\Rk\AppData\Roaming\gcloud\application_default_credentials.json]

These credentials will be used by any library that requests Application Default Credentials (ADC).

Quota project "mtdbk-01" was added to ADC which can be used by Google client libraries for billing and quota. Note that some services may still bill the project owning the resource.

PS C:\Rk\firebase_function\m2d>

My index.js file is like this

const functions = require("firebase-functions");
const firebaseadmin = require('firebase-admin');
const express = require('express');

firebaseadmin.initializeApp();
var db = firebaseadmin.firestore().collection('fdb');

const app = express();
app.use(express.urlencoded({extended:true}));

app.use(express.json());



app.get('/data',(req,res)=>{
    try {
        const firebase_data = await db.doc('twodlog').get();
        twoD = firebase_data.data();
        res.json(twoD);
    } catch (error) {
        res.status(500).send('Server Error!');
    }
});


exports.app = functions.https.onRequest(app);


Edited >>> I found a solution for this problem but I do not like it. Because, I don't want to upload my service account credential key file. Can anyone tell me better solution for that?

I founded solution is >>

var key = require('./key.json');

admin.initializeApp({credential:admin.credential.cert(key)});
0 Answers
Related