Исключение проблемы с firebase privateKey в качестве переменной конфигурации Heroku
Я пытаюсь создать задачу Heroku node, которая считывает данные из Firebase и console.log.
Мой node script (находится внутри каталога /bin ):
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();
})
Все переменные env верны, кроме fb_privateKey
, так как содержат \n
символы.
Как мой локальный файл .env
, так и переменные среды Heroku содержат ключ с именем fb_privateKey
и значение в виде строки с символами \n
- в окружении "
.
fb_privateKey="-----BEGIN PRIVATE KEY-----\nMY-PRIVATE-KEY\n-----END PRIVATE KEY-----\n"
Когда я запускаю script локально, он регистрирует мне закрытый ключ с новыми строками + задачи, которые были возвращены из Firebase. Однако, когда я запускаю его на Heroku, (heroku run myScript
) регистрирует личный ключ с символами \n
(как одну строку) и не считывает данные из Firebase (вероятно, из-за плохого закрытого ключа). Любые идеи?
Ответы
Ответ 1
У меня была такая же проблема сегодня. Вам необходимо очистить закрытый секретный ключ, заменив \\n
символы на \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,
});