如何根据环境为 Firebase Cloud Functions 设置变量?

Posted

技术标签:

【中文标题】如何根据环境为 Firebase Cloud Functions 设置变量?【英文标题】:How do you set variables, based on environment, for Firebase Cloud Functions? 【发布时间】:2021-09-23 15:31:33 【问题描述】:

类似的问题 How do you setup local environment variables for Cloud Functions for Firebase,但专门研究如何设置开发和生产之间不同的环境变量。

例如, 假设我通常会:

.env

REACT_APP_DOMAIN:https://foo-bar.web.app/

.env.development

REACT_APP_DOMAIN: http://localhost:3000/

如何为 Firebase Cloud Functions 创建类似的设置?

【问题讨论】:

您是否使用 Firebase 模拟器进行开发? 是的,我正在使用 Firebase 模拟器进行开发。 你试过this吗? @Dharmaraj 你能更具体一点吗?这是我在原始问题中链接的问题。据我所知,没有任何内容可以解释如何区分环境。需要明确的是,设置在两种环境中都可以访问的变量没有问题。我的问题是我需要一个变量来根据环境而有所不同。 【参考方案1】:

我对自己的问题有一个答案,但我认为这不是最佳答案。

在 Firebase 的 local-emulator documentation 中,他们有这个部分:

设置功能配置(可选)

如果您使用自定义函数配置变量,请首先在本地环境中运行命令以获取自定义配置(在函数目录中运行):

firebase functions:config:get > .runtimeconfig.json

如果使用 Windows PowerShell,请将以上内容替换为:

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

虽然解释得不好,但这只是创建一个 json 文件 .runtimeconfig.json,其中包含您的 firebase 配置变量。然后 Firebase 模拟器会使用此文件中的变量来代替存储在 Firestore 中的变量。这在github repo ticket 中有更好的解释。

现在知道了这一点,.runtimeconfig.json 可以以与.env.development 类似的方式使用。您可以根据需要手动更新它,而不是使用他们建议的命令(或使用他们的命令来下拉您的 firebase 变量,然后根据需要修改它们)。

您以与通常access Firebase variables、functions.config().foo.bar 完全相同的方式访问/使用这些局部变量。

部署后,它们会引用您在 Firebase 上设置的变量。在开发过程中(通过 firebase 模拟器),他们会引用您在 .runtimeconfig.json 中的内容。

【讨论】:

如果您发现缺少 Firebase 文档,请考虑点击相应页面末尾的“发送反馈”按钮并向文档团队提供建设性/可操作的反馈。

以上是关于如何根据环境为 Firebase Cloud Functions 设置变量?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 Angular Universal 为 Firebase Cloud Functions 编译 Typescript

使用 Github Actions 部署 Firebase Cloud 函数时的环境变量

如何将我的 Firebase 实时数据库转移到 Firebase Cloud Firestore

如何将我的 Firebase 实时数据库转移到 Firebase Cloud Firestore

如何使用 Firebase Cloud Messaging 发送图像并使用数据有效负载发出通知

Cloud Storage for Firebase 访问错误“admin.storage(...).ref 不是函数”