Firebase Cloud Functions v1环境变量获取/设置及v1.0.2升级问题咨询
Cloud Functions v1.0.2+ 自定义环境变量的正确处理方式
你遇到的这个情况其实是Cloud Functions升级到v1.x版本后,配置逻辑发生了变化导致的——process.env.FIREBASE_CONFIG现在只包含项目的基础核心配置(比如项目ID、存储桶地址、数据库URL这些),不再包含你通过旧方式设置的自定义环境变量了。下面给你讲清楚新的设置和获取方法:
一、设置自定义环境变量
现在需要通过Firebase CLI的专门命令来配置,格式如下:
firebase functions:config:set 命名空间.变量名="变量值"
比如你要设置一个第三方API的密钥,可以这么写:
firebase functions:config:set api.openai_key="sk-xxxxxx"
如果要一次性设置多个变量,也可以合并命令:
firebase functions:config:set api.openai_key="sk-xxxxxx" db.connection_string="mongodb://xxx"
二、在代码中获取自定义变量
依然使用functions.config()来访问,对应你设置的命名空间和变量名即可:
const functions = require('firebase-functions'); // 获取刚才设置的OpenAI密钥 const openaiKey = functions.config().api.openai_key; // 获取数据库连接字符串 const dbConnStr = functions.config().db.connection_string;
三、本地开发的注意事项
如果你在本地调试Functions,直接调用functions.config()会拿不到配置,这时候需要先把云端的配置导出到本地的.runtimeconfig.json文件:
firebase functions:config:get > .runtimeconfig.json
这个文件会被自动加载,本地调试时就能正常访问自定义变量了。
四、为什么JSON.parse(process.env.FIREBASE_CONFIG)拿不到自定义变量?
这个环境变量现在仅用于提供项目的基础配置,内容大概是这样的:
{ "projectId": "your-project-id", "storageBucket": "your-project.appspot.com", "databaseURL": "https://your-project.firebaseio.com", "locationId": "us-central1" }
确实不包含任何你自定义的配置项,所以别再从这里找啦,老老实实用functions.config()就对了。
部署时的小提醒
当你执行firebase deploy --only functions时,之前设置的自定义配置会自动同步到云端,不需要额外操作,部署后的函数就能直接访问这些变量了。
内容的提问来源于stack exchange,提问作者william
相关产品推荐
相关产品推荐

