Облачная функция Firebase process.env.FIREBASE_CONFIG.ProjectID не определен

# #node.js #typescript #firebase #google-cloud-functions #environment-variables

Вопрос:

Из официальных документов Firebase по облачным функциям:

https://firebase.google.com/docs/functions/config-env#automatically_populated_environment_variables

введите описание изображения здесь

Мне нужен доступ projectId , поэтому я пытаюсь:

 type FirebaseConfigEnv = {
  databaseURL: string,
  storageBucket: string,
  projectId: string
}

export const helloWorld = functions.https.onRequest((request, response) => {
  const FIREBASE_CONFIG = process.env.FIREBASE_CONFIG as unknown as  FirebaseConfigEnv;
  response.send(`FIREBASE_CONFIG.projectId: ${FIREBASE_CONFIG.projectId}`);
});
 

И я получаю в браузере следующий результат:

введите описание изображения здесь

Почему process.env.FIREBASE_CONFIG объект неправильно заполняется в моей среде выполнения?

Ответ №1:

Значение process.env.FIREBASE_CONFIG является строкой JSON. Поскольку строки не имеют вызываемого свойства projectId , вы получаете undefined .

Чтобы использовать его так, как вы ожидаете, вы должны сначала проанализировать его, как показано в нижней части документации, которую вы связали:

 const FIREBASE_CONFIG = JSON.parse(process.env.FIREBASE_CONFIG);
const projectId = FIREBASE_CONFIG.projectId;
 

Комментарии:

1. Отличное место, Рафаэль, просто обратите внимание на правку о том, как правильно отформатировать свой ответ с помощью блоков кода. Старайтесь придерживаться формата «Проблема» -> «Ссылка» ->> «Как исправить» ->>> «Исправленный код». Будьте уверены в своем ответе, поскольку вы были правы, и постарайтесь исключить утверждения «попробуйте это», поскольку они лучше подходят для комментариев.

2. БОЖЕ, я не могу поверить, что google использовал это глупое дизайнерское решение… в качестве начала вопроса я также предположил, что переменная была объектом, а не полосой по очевидным причинам, спасибо за ответ