# #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 использовал это глупое дизайнерское решение… в качестве начала вопроса я также предположил, что переменная была объектом, а не полосой по очевидным причинам, спасибо за ответ