javascript heroku firebase firebase-database

javascript - Problema de escape con firebase privateKey como una variable de configuración de Heroku



firebase-database (1)

Tuve el mismo problema hoy. Debe desinfectar la clave privada de lectura reemplazando //n caracteres con /n .

admin.initializeApp({ credential: admin.credential.cert({ "projectId": process.env.FIREBASE_PROJECT_ID, "private_key": process.env.FIREBASE_PRIVATE_KEY.replace(///n/g, ''/n''), "clientEmail": process.env.FIREBASE_CLIENT_EMAIL, }), databaseURL: process.env.FIREBASE_DATABASE_URL, });

Intento crear una tarea de nodo Heroku que lea datos de Firebase y console.log.

Mi script de nodo (ubicado dentro del directorio / bin) es:

require(''dotenv'').config({ silent: true }); var firebase = require(''firebase''); firebase.initializeApp({ serviceAccount: { projectId: process.env.fb_projectId, clientEmail: process.env.fb_clientEmail, privateKey: process.env.fb_privateKey }, databaseURL: process.env.fb_databaseURL }) console.log(process.env.fb_privateKey); firebase.database().ref(''tasks'').once(''value'', function(snapshot) { console.log(snapshot.val()); process.exit(); })

Todas las variables env son correctas, excepto fb_privateKey , ya que contiene /n caracteres.

Tanto mi archivo .env local como las variables de entorno Heroku contienen una clave llamada fb_privateKey y un valor como una cadena con /n caracteres - rodeada con " .

fb_privateKey="-----BEGIN PRIVATE KEY-----/nMY-PRIVATE-KEY/n-----END PRIVATE KEY-----/n"

Cuando ejecuto el script localmente, me registra la clave privada con nuevas líneas + las tareas que fueron devueltas desde Firebase. Sin embargo, cuando lo ejecuto en Heroku, ( heroku run myScript ) me registra una clave privada con /n caracteres (como una sola línea) y no puedo leer los datos de Firebase (probablemente debido a una mala clave privada). ¿Algunas ideas?