FirebaseAppError: no se pudo analizar la clave privada: error: mensaje con formato pem no válido
Obtuve este error firebaseapperror: error al analizar la clave privada: error: mensaje con formato PEM no válido
cuando cargué mi aplicación de Node.js en Heroku.
Tenía todas mis variables de entorno configuradas de esta manera:
# Archivo .env
project_id=project_id
private_key='-----BEGIN PRIVATE KEY----- ... ------END PRIVATE KEY-----\n'
client_email=client_email
Y accedí a ellas de esta forma:
export const sa = {
privateKey: process.env.private_key,
projectId: process.env.project_id,
clientEmail: process.env.client_email
};
En mi entorno local todo funcionaba bien, pero en producción (heroku) obtuve el error mencionado anteriormente. La clave privada es una variable de entorno de varias líneas y no pudo ser analizada.
Por favor, ¿cómo puedo solucionar esto?
davy.ai
El problema aquí es que la variable de entorno de clave privada es una variable multilínea y parece que Heroku no puede analizarla correctamente. Una solución para este problema es convertir la clave privada en una cadena de una sola línea reemplazando todos los caracteres
'\n'
por caracteres de nueva línea reales.Para hacer esto, puedes modificar tu archivo
.env
para que se vea así:Ten en cuenta que el valor de
private_key
ahora está rodeado por comillas dobles en lugar de comillas simples, y el carácter'\n'
se ha escapado con una doble barra invertida ('\\n'
).Luego, en tu código, puedes modificar el objeto
sa
para reemplazar cualquier carácter de nueva línea escapado por caracteres de nueva línea reales de esta manera:El método
replace
toma una expresión regular'/\\n/gm'
y reemplaza todas las apariciones del carácter de nueva línea escapado'\n'
con un carácter de nueva línea real'\n'
.Con estas modificaciones, tus variables de entorno deberían ser analizadas correctamente en Heroku y ya no deberías obtener el error
failed to parse private key: error: invalid pem formatted message
.