为firebase功能设置NODE_ENV

时间:2017-03-31 11:48:34

标签: firebase google-cloud-functions

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

3 个答案:

答案 0 :(得分:1)

跟随Google documentationBest practices and reserved environment variables

  

环境提供的环境变量可能会在将来的运行时版本中更改。最佳做法是,建议您不要依赖或修改未明确设置的任何环境变量。

基本上不使用NODE_ENV。使用您自己的环境变量并进行相应设置。

注意:本文档来自Google Cloud Functions。 Firebase函数就像是围绕Google Cloud函数的包装。选中此question

答案 1 :(得分:0)

当前无法设置自定义环境变量,例如public class BoolValue implements Value { private final boolean item; private BoolValue(boolean v){ this.item = v; } public static final BoolValue TRUE = new BoolValue(true); public static final BoolValue FALSE = new BoolValue(false); public static BoolValue valueOf(boolean x){ return x ? TRUE : FALSE; } } 。您只想对Google Cloud功能执行操作,并且需要使用process.env.NODE_ENV命令行工具。

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

其他选项

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

基于项目ID的条件

如果您要进行测试,暂存和生产项目,并且希望根据环境使用不同的行为或记录,则可以访问项目ID。

gcloud设置为您的GCP项目ID,因此您可以基于此ID来构建逻辑。

process.env.GCLOUD_PROJECT

云函数环境变量

您已经提到了云功能环境变量。您可以有效地创建构建管道,以在构建/部署时配置您的环境配置,然后在您的云功能中对其进行访问。


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


访问配置实际上与您的- firebase functions:config:set runtime.env="production" --token $FIREBASE_DEPLOY_KEY 相同,但是不能在云函数范围之外访问(即,您不能在全局变量声明中使用它)。

process.env

答案 2 :(得分:0)

在我回答这个问题时, Firebase Cloud Functions SDK提供了现成的内置环境配置

设置项目的环境配置

$ 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.