如何获取/设置firebase云功能v1环境变量

时间:2018-05-02 16:34:28

标签: firebase google-cloud-functions

我使用functions.config()命令以旧方式使用Cloud Functions包中的环境变量,但由于我更新到v1.0.2,我甚至无法通过JSON.parse(process.env.FIREBASE_CONFIG)使用env变量,就像文档一样告诉我做,我找不到如何设置或获取其他信息。此命令仅向我提供有关项目的信息,但不提供我使用旧方法设置的信息。如何使用新方法获取/设置此信息?
提前谢谢。

3 个答案:

答案 0 :(得分:3)

documentation for the environment changes in 1.0可能有点令人困惑。 functions.config()不会消失 - 您仍然使用它来访问使用带有firebase functions:config:set的Firebase CLI设置的环境变量。关于配置而改变的事情如下:

  • functions.config().firebase不再用于项目配置。该信息现在作为process.env.FIREBASE_CONFIG存储在流程环境中。
  • 您现在可以将没有参数的Admin SDK初始化为admin.initializeApp()。配置将自动从Cloud Functions运行时中获取。

答案 1 :(得分:0)

请在此处查看此答案https://stackoverflow.com/a/45064266/4871483。我的理解是,新的云功能将来自本地.runtimeconfig.json。我建议暂时降级并将旧配置写入该文件。然后,您可以将这些文档https://firebase.google.com/docs/functions/local-emulator用于再次升级后如何访问它的代码。

答案 2 :(得分:0)

我所做的基本上是

env.prod.ts
env.dev.ts
env.ts

在我的环境中

export const env = require(`./env.${functions.config().env.name}').default;

,在package.json中,我设置了

"dev-prod": firebase use prod && functions:config:set env.name=prod

等 这样我既可以拥有fb密钥,也可以拥有自己的prod密钥,并且整个应用程序与配置无关

当我需要env var时,我只使用

import environment from '../env.ts'

与json等兼容(dotenv不支持)