为 firebase 函数设置 NODE_ENV

Setting NODE_ENV for firebase function

我正在将我的一些 firebase-queue 工作人员转移到 Firebase Functions。我已经使用 process.env.NODE_ENV 为工作人员设置了一些配置,具体取决于我所在的环境 运行 他们。有没有办法在部署函数时为函数设置 NODE_ENV。我知道提供此类配置选项的推荐方法是通过 firebase.config.set,我已验证它按预期工作,但只是想检查是否还有设置 NODE_ENV 的方法。当我尝试打印出函数内部的 NODE_ENV 时,它总是设置为 production.

目前无法设置自定义环境变量,例如process.env.NODE_ENV。你想做的事情只能为 Google 云功能完成,你需要使用 gcloud 命令行工具。

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

其他选项

如果您正在专门为 Firebase 开发并且需要类似的解决方案,那么有一些选择。

基于项目 ID 的条件

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

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


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


云函数环境变量

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

- firebase functions:config:set runtime.env="production" --token $FIREBASE_DEPLOY_KEY

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

if (functions.config().runtime.env === 'production') {
  // Only in production
} else {
  // Do something for the test environments
}

在我回答这个问题时,适用于 Cloud Functions 的 Firebase SDK 提供了built-in 开箱即用的环境配置

为您的项目设置环境配置

$ firebase functions:config:set [values...]

例子

$ firebase functions:config:set someservice.key="THE API KEY" someservice.id="THE CLIENT ID"

获取项目的环境配置

$ firebase functions:config:get [path]

例子

const functions = require('firebase-functions')
console.log(functions.config().someservice.id)

注意:You must redeploy functions to make the new configuration available.

documentation

中关注 Google 的 Best practices and reserved environment variables

Environment variables that are provided by the environment might change in future runtime versions. As a best practice, we recommend that you do not depend on or modify any environment variables that you have not set explicitly.

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

注意: 本文档来自 Google Cloud Functions。 Firebase 函数就像 google 云函数的包装器。检查这个