如何获取/设置 firebase 云函数 v1 环境变量

Posted

技术标签:

【中文标题】如何获取/设置 firebase 云函数 v1 环境变量【英文标题】:how to get/set firebase cloud functions v1 environment variables 【发布时间】: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 哦,我误解了文档。你想写和答案一样的东西,以便我可以接受它作为正确答案吗?非常感谢你再次提醒道格。 【参考方案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://***.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 不适用)

【讨论】:

以上是关于如何获取/设置 firebase 云函数 v1 环境变量的主要内容,如果未能解决你的问题,请参考以下文章

如何在 firebase 托管的 webapp 中获取 firebase 函数 URL?

如何使用以 TypeScript for Firebase Realtime 数据库编写的云函数从 onCreate 触发以外的节点获取数据?

设置 Firebase 本地模拟器云功能环境配置值

Firebase 的云功能 - 获取当前用户 ID [重复]

Cloud Functions Firebase v1.0 不会初始化

如何从 firebase_auth 获取令牌