Firebase Cloud Functions v2全局配置与函数单独配置的优先级及密钥访问范围问题
Firebase Cloud Functions v2全局配置与函数单独配置的优先级及密钥访问范围问题
我来给你掰扯清楚这个问题哈,先直接给你结论:你的logFileUpload函数能同时访问SAY_HI和SAY_HI_AGAIN两个密钥,不是二选一哦。
Firebase Cloud Functions v2里,全局配置和函数单独配置的关系得分配置类型来看:
- 对于单一值类型的配置(比如region、memory、timeout这些):函数自己的单独配置会覆盖全局配置。比如你全局设了region为
asia-northeast1,要是函数自己指定了us-central1,那这个函数就会跑在us-central1,全局的region就不管用了。 - 对于数组类型的配置(比如secrets、eventFilters这些):函数的单独配置会和全局配置合并,而不是覆盖。也就是说全局里的数组项 + 函数自己的数组项,最终都会生效。
回到你贴的代码例子:
- 你通过
setGlobalOptions全局注册了密钥SAY_HI_AGAIN - 又给
logFileUpload函数单独配置了密钥SAY_HI
这两个密钥数组会被合并成["SAY_HI_AGAIN", "SAY_HI"],所以函数运行时,这两个密钥对应的环境变量都会被注入到process.env里,你既可以打印process.env.SAY_HI,也能正常拿到process.env.SAY_HI_AGAIN的值。
总结一下:单一配置项看覆盖,数组配置项看合并,你的secrets属于数组类,所以两个密钥都能访问到~




