Подтвердить что ты не робот

Исключение проблемы с 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 (вероятно, из-за плохого закрытого ключа). Любые идеи?

4b9b3361

Ответ 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,
});