Node.js -Firebase Service Account Private Key won't parse Node.js -Firebase Service Account Private Key won't parse json json

Node.js -Firebase Service Account Private Key won't parse


The problem was since I used dotenv variables inside the .env file the FIREBASE_PRIVATE_KEY had escaping characters: \n inside of it.

I had to follow this answer and append .replace(/\\n/g, '\n') to the end of it to parse it:

privateKey: process.env.FIREBASE_PRIVATE_KEY.replace(/\\n/g, '\n')

So now the code looks like:

admin.initializeApp({  credential: admin.credential.cert({      projectId: process.env.FIREBASE_PROJECT_ID, // I get no error here      clientEmail: process.env.FIREBASE_CLIENT_EMAIL, // I get no error here      privateKey: process.env.FIREBASE_PRIVATE_KEY.replace(/\\n/g, '\n') // NOW THIS WORKS!!!  }),  databaseURL: process.env.FIREBASE_DATABASE_URL});


You must add your key into double qoutes to allow expanded new lines option according with dotenv documentation.

You can check that option at Rules section in dotenv github.

https://github.com/motdotla/dotenv#rules

  FIREBASE_PROJECT_ID=wwwwwwww  FIREBASE_CLIENT_EMAIL=xxxxxxxx  FIREBASE_DATABASE_URL=yyyyyyyy  FIREBASE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\nzzzzzzzz\n-----END PRIVATE KEY-----\n"


I believe cert function is wating JSON objecttry converting the key into JSON and i think it will work

credential: admin.credential.cert(JSON.parse(serviceAccountKey))

this worked for me !