如何根据环境为 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 设置变量?的主要内容,如果未能解决你的问题,请参考以下文章