【问题标题】:how to get/set firebase cloud functions v1 environment variables如何获取/设置 firebase 云函数 v1 环境变量
【发布时间】:2018-10-12 20:23:52
【问题描述】:

我使用 functions.config() 命令以旧方式使用 Cloud Functions 包中的环境变量,但由于我更新到 v1.0.2,即使通过 JSON.parse(process.env.FIREBASE_CONFIG) 也无法使用 env 变量,就像文档告诉的那样,而且我找不到如何设置或获取其他信息。这个命令只给我关于项目的信息,而不是我使用旧方法设置的信息。如何使用新方法获取/设置这些信息?
提前致谢。

【问题讨论】:

  • 我不明白你的问题。您仍然可以使用 functions.config() 访问由 Firebase CLI 设置的环境变量。这一点都没有改变。只是不再有functions.config().firebase
  • 哦,我误解了文档。你想写和答案一样的东西,以便我可以接受它作为正确答案吗?非常感谢你再次提醒道格。

标签: firebase google-cloud-functions


【解决方案1】:

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 运行时获取配置。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 感谢您的回复,但这不是我的意思。我认为functions.config() 方法不再有效,从而误解了文档。我不应该改变获取自定义信息的方法。
    • 啊,我明白了。如果其他人需要进行迁移或本地环境变量,我会把答案留在那里
    【解决方案3】:

    我做的基本上是有

    env.prod.ts
    env.dev.ts
    env.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 密钥,并且整个应用程序与配置无关

    当我需要环境变量时,我只使用

    import environment from '../env.ts'
    

    适用于 json 等(dotenv 不适用)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-26
      • 2018-01-30
      • 1970-01-01
      • 2019-04-17
      • 2019-07-13
      • 2019-11-08
      • 1970-01-01
      • 2010-09-16
      相关资源
      最近更新 更多