При подключении Firebase Firestore к серверу node.js, расположенному на Heroku, переменные среды возвращаются неопределенными - PullRequest
0 голосов
/ 12 октября 2018

Я совершенно новичок в способе node.js, основанном на использовании PHP и SQL для всего.Недавно я пытался настроить сервер узлов на Heroku, чтобы сделать некоторую внутреннюю логику в моей базе данных Google Firestore.

Я не хотел, чтобы мой закрытый ключ был публично доступен в виде файла, и я увидел, что самый простой способ - сохранить переменные в качестве переменных среды и использовать их для настройки сертификата для инициализации firebase-admin изпредыдущий вопрос переполнения стека.

Я сейчас попытался настроить это и разместить его на heroku.Определив мои переменные окружения, я дважды проверил, что имена правильные и были установлены с помощью heroku config: set, а затем проверил, используя heroku config.Я бы показал это, но он, очевидно, содержит мой закрытый ключ!

Так что, когда я пытаюсь запустить этот сегмент кода:

//requires firebase module
var admin = require('firebase-admin');
const private_key = process.env.FIREBASE_PRIVATE_KEY_ID;
console.log(private_key);
//initialises a firebase app with the credential
admin.initializeApp({
  credential: admin.credential.cert({
    "private_key": process.env.FIREBASE_PRIVATE_KEY_ID,
    "client_email": process.env.FIREBASE_CLIENT_EMAIL,
    "project_id": process.env.FIREBASE_PROJECT_ID,
    "private_key_id": process.env.FIREBASE_PRIVATE_KEY_ID
  }),
  databaseURL: "https://MY_APP.firebaseio.com"
});
//get access to firestore from initialised app
var db = admin.firestore();

С MY_APP, отличным от того, что есть в исходном коде.

Поэтому, когда я запускаю это и консольный журнал, ключ я получаю:

[console log of error caused by undefined variable 1

Извините, если это тривиальная проблема, так как я говорю, что я определенно начинающий с узла.Я немного поработал с модулем HTTP для обработки некоторых запросов, но не для подключения к firebase.Любой совет или помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 12 октября 2018

heroku config:set устанавливает переменные среды в Heroku , но heroku local запускает ваше приложение на локальном компьютере:

Heroku Local - это инструмент командной строки для запуска *Приложения с поддержкой 1008 * Procfile .Он устанавливается автоматически как часть Heroku CLI .Heroku Local считывает переменные конфигурации из файла .env .Heroku Local использует node-foreman для выполнения своих задач.

heroku local автоматически прочитает файл с именем .env и установит переменные среды для вас в зависимости от того, что оннаходит там.Этот файл не должен отслеживаться Git (он предназначен для вашей локальной среды, а не для Heroku, и, как вы упомянули, он будет содержать конфиденциальную информацию, которую не следует проверять в любом случае).

Если вы хотите скопировать переменную конфигурации, которая у вас есть на Heroku , вы можете добавить ее в .env, запустив

heroku config:get CONFIG-VAR-NAME -s >> .env

(на самом деле существует множество способов установить переменные средына вашем локальном компьютере, и любой из них будет работать с heroku local. Если вы предпочитаете другой метод, пойти на это.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...