类似的问题 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 创建类似的设置?
答案 0 :(得分: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
中的内容。