为 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.
中关注 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 云函数的包装器。检查这个
我正在将我的一些 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.
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 云函数的包装器。检查这个