Настройка dotenv в функциях Firebase - PullRequest
0 голосов
/ 22 января 2019

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

Файл содержит dotenv переменных. Ранее я думал, что если я просто разверну и поставлю dotenv в зависимость, это сработает, но этого не произошло ..

Итак, я перешел к статье конфигурации среды firebase , чтобы понять, как я могу установить .env

В каком состоянии устанавливать вещи, делая что-то подобное

firebase functions:config:set someservice.key="THE API KEY" someservice.id="THE CLIENT ID"

Но у меня так много конфигурации окружения, и я выполняю кое-что, что кажется громоздкой задачей.

Допустим, это файл окружения

# App port Address
PORT = 8080

# Google Secret 
GOOGLE_CALLBACK_URL =   http://localhost:8080/auth/google/callback
GOOGLE_CLIENT_ID = 4048108-bssbfjohpu69vl6jhpgs1ne0.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET = lTQHpjzY57oQpO

# Client Address 
CLIENT_ADDRESS = http://localhost:3000/


# Meetup Secret 
MEETUP_CALLBACK_URL = http://localhost:8080/auth/meetup/callback
MEETUP_CLIENT_ID = ef6i9f7m6k0jp33m9olgt
MEETUP_CLIENT_SECRET = sk3t5lnss2sdl1kgnt

#EventBrite Secret 
EVENTBRITE_CALLBACK_URL = http://localhost:8080/auth/eventbrite/callback
EVENTBRITE_CLIENT_ID = UU2FXKGYHJRNHLN
EVENTBRITE_CLIENT_SECRET = NA55QG52FAOF6GDMLKSJBKYOPIGQU4R46HHEU4 

Как лучше настроить, чтобы при работе с firebase firebase обслуживал - только функции, размещая , он не выдавал никаких ошибок, таких как

OAuth2Strategy требует опции clientID

Ответы [ 3 ]

0 голосов
/ 26 мая 2019

Если вы хотите, чтобы ваши функции использовали переменные process.env, вы можете установить их, перейдя в облачную консоль Google и облачные функции. Там вы сможете найти развернутые функции Firebase. Вы можете выбрать каждую функцию одну за другой, а затем установить там переменные среды.

0 голосов
/ 30 мая 2019

ОБНОВЛЕНО 2019-06-04

Мне очень жаль. Это решение неверно.

Я нашел правильный путь.

https://stackoverflow.com/a/45064266/1872674

Вы должны поместить .runtimeconfig.json в каталог функций. Ваши переменные перемещаются в .runtimeconfig.json в формате json.


Это мое решение.

const functionConfig = () => {
    if (process.env.RUN_LOCALLY) {
        const fs = require('fs');
        return JSON.parse(fs.readFileSync('.env.json'));
    } else {
        return functions.config();
    }
};

finctionConfig() был вызван вашей функцией Firebase.

exports.helloWorld = functions.https.onRequest((request, response) => {
    response.send("someservice id is: " + functionConfig().someservice.id);
});

.env.json это как:

{
  "someservice": {
    "key":"THE API KEY",
    "id":"THE CLIENT ID"
  }
}

Наконец, запустите команду с переменной RUN_LOCALLY.

RUN_LOCALLY=1 firebase serve

Когда мы развернем функции, не забудьте обновить конфигурацию среды в Firebase, используя .env.json.

0 голосов
/ 22 января 2019

Интерфейс командной строки Firebase в настоящее время не позволяет устанавливать переменные среды процесса при развертывании.Это может измениться в будущем.Поддерживаемые вами сегодня конфигурационные переменные (с которыми вы связаны) на самом деле не являются переменными среды процесса - они хранятся в другом месте, которое на самом деле не является средой процесса.

Если вам абсолютно необходимо иметь возможность устанавливать переменные среды процесса, вывам придется развернуть вашу функцию с помощью gcloud, а это значит, что вы также не сможете использовать модуль firebase-functions для определения вашей функции.Начните с документации Google Cloud Functions , чтобы узнать о развертывании с точки зрения облака.

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

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