为firebase功能设置NODE_ENV

Var*_*pta 15 firebase google-cloud-functions

我正在将我的一些firebase-queue工作人员转移到Firebase功能.我习惯process.env.NODE_ENV根据我运行它们的环境为worker设置一些配置.有没有办法NODE_ENV在部署它们时设置功能.我知道提供这样的配置选项的推荐方法是通过firebase.config.set我已经验证按预期工作,但只是想检查是否有办法设置NODE_ENV也.当我尝试打印出NODE_ENV函数内部时,它始终设置为production.

Den*_*und 9

目前无法设置自定义环境变量,例如process.env.NODE_ENV. 您想要做的只能针对 GCP 功能完成,并且您需要使用gcloud命令行工具。

https://cloud.google.com/functions/docs/env-var#accessing_environment_variables_at_runtime

其他选项

如果您专门为 Firebase 开发并需要类似的解决方案,那么有多种选择。

基于项目 ID 的条件

如果您有测试、暂存和生产项目并希望根据环境具有不同的行为或日志记录,则可以访问项目 ID。

process.env.GCLOUD_PROJECT 设置为您的 GCP 项目 ID,以便您可以基于该 ID 构建逻辑。


if (process.env.GCLOUD_PROJECT === 'my-production-project') {
  // Only in production
} else {
  // Do something for the test environments
}


Run Code Online (Sandbox Code Playgroud)

云函数环境变量

正如您已经提到的,还有云函数环境变量。您可以有效地创建构建管道,在构建/部署时配置您的环境配置,然后在您的云功能中访问它们。

- firebase functions:config:set runtime.env="production" --token $FIREBASE_DEPLOY_KEY
Run Code Online (Sandbox Code Playgroud)

访问配置实际上与您的配置相同,process.env但不能在云函数范围之外访问(即您不能在全局变量声明中使用它)。

- firebase functions:config:set runtime.env="production" --token $FIREBASE_DEPLOY_KEY
Run Code Online (Sandbox Code Playgroud)


ajo*_*era 7

Best practices and reserved environment variables在他们的文档中关注谷歌

环境提供的环境变量可能会在未来的运行时版本中发生变化。作为最佳实践,我们建议您不要依赖或修改任何未明确设置的环境变量。

基本不用NODE_ENV。使用您自己的环境变量并相应地设置它们。

注意:此文档来自 Google Cloud Functions。Firebase 函数就像是谷歌云函数的包装器。检查这个问题