使用GOOGLE_APPLICATION_CREDENTIALS部署Firebase Functions全局读取环境配置失败
问题原因
- Firebase Functions部署过程中,会首先在本地解析你编写的函数代码、校验触发器配置,此时全局作用域的代码会直接执行。当你调用
functions.config()时,Firebase CLI需要先从远程拉取项目的环境配置到本地,才能返回正确的配置值。 - 执行
firebase login登录个人账号时,你的账号默认持有项目的编辑/所有者权限,CLI可以正常拉取环境配置,因此全局调用不会报错。 - 仅通过
GOOGLE_APPLICATION_CREDENTIALS传入服务账号部署时,你使用的服务账号缺少读取Firebase项目环境配置的IAM权限,CLI拉取不到配置数据,导致functions.config().env返回undefined,尝试读取domain属性就会触发你遇到的类型错误。
修复方案
- 进入Google Cloud IAM控制台,找到你使用的服务账号,为其添加「Firebase 环境配置查看者」或更高权限的「Firebase 管理员」角色,确保服务账号有权限拉取项目环境配置即可解决该问题。
- 若不想调整服务账号权限,也可以将全局作用域的
functions.config()调用移到函数内部执行,这样该代码只会在函数实际运行时才执行,部署阶段解析触发器时不会触发调用,也可以规避该报错。
内容的提问来源于stack exchange,提问作者benshabatnoam
相关产品推荐
相关产品推荐

