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?