Как настроить локальные переменные среды для облачных функций для Firebase

Я использую функции http cloud для прослушивания запроса, а затем возвращаю простое сообщение.

Я разрабатываю облачные функции локально, используя:

firebase serve --only functions

Я установил некоторые пользовательские переменные среды, используя

firebase functions:config:set

Доступ к настраиваемым переменным конфигурации с использованием приведенного ниже кода отлично работает при развертывании проекта

 functions.config()

но он не работает при локальном развитии. Когда функция запускается нажатием: http://localhost:5002/my-project-name/us-central1/functionName Я не могу получить доступ к настраиваемым переменным конфигурации. при использовании функции functions.config() локально, я вижу конфигурацию по умолчанию, а не мои настраиваемые переменные конфигурации

Существует ли альтернативное решение или передовая практика для переменных среды при работе на локальном уровне?

Ответы

Ответ 1

На данный момент вы должны вручную создать файл .runtimeconfig.json в вашем каталоге функций, выполнив эту команду. Затем выполните команду подачи.

firebase functions:config:get > .runtimeconfig.json

Если вы используете Windows Powershell, замените вышеуказанное на:

firebase functions:config:get | ac .runtimeconfig.json

Вы можете узнать больше в https://firebase.google.com/docs/functions/local-emulator

Ответ 2

Для тех, кто хочет использовать переменные среды (process.env), я следую этому обходному пути.

Установите значения конфигурации перед развертыванием

firebase functions:config:set envs.db_host=$DB_HOST_PROD envs.db_user=$DB_USER_PROD envs.db_password=$DB_PASSWORD_PROD envs.db_name=$DB_NAME_PROD envs.db_use_ssl=false

Прочитайте конфиг и сначала обновите переменные env под кодом вашей функции.

const functions = require('firebase-functions');
const config = functions.config();
// Porting envs from firebase config
for (const key in config.envs){
  process.env[key.toUpperCase()] = config.envs[key];
}

Ответ 3

Я не уверен, что ответ с самым высоким рейтингом работает или нет, но для функции firebase на Mac (для локального обслуживания) я делаю что-то вроде этого

npm run admin-keys && export dev=true && firebase emulators:start

Где находятся ключи администратора

"admin-keys": "export GOOGLE_APPLICATION_CREDENTIALS='./.keys/admin.keys.json'"

Это загрузит конфигурацию из .runtimeconfig.json

Для производства вы должны вручную установить его, выполнив что-то вроде этого

firebase functions:config:set facebookCred.secret="something"