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