如何获取/设置 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 的云功能 - 获取当前用户 ID [重复]