Firebase 9中为Stripe客户门户Https Callable云函数指定部署位置
解决Firebase 9调用指定区域云函数的正确写法
问题原因
你遇到的CORS报错本质是云函数区域不匹配:Firebase 9默认调用us-central1区域的云函数,如果你部署Stripe订阅扩展时选择了其他区域,就会出现跨域拦截。你之前尝试的链式调用.location()是Firebase 8的语法,Firebase 9模块化API不支持该写法。
正确实现步骤
- 导入对应依赖
import { getFunctions, httpsCallable } from "firebase/functions";
- 初始化functions实例时直接传入区域参数
这里的区域要和你部署Stripe扩展时选择的区域完全一致,示例用官方样例的us-east1:
// 第二个参数即为云函数部署区域 const functions = getFunctions(firebaseApp, "us-east1");
- 调用云函数的逻辑保持不变即可
export async function goToBillingPortal() { const functionRef = httpsCallable(functions, 'ext-firestore-stripe-subscriptions-createPortalLink'); const { data } = await functionRef({ returnUrl: window.location.origin }); window.location.assign(data.url); }
注意事项
- 务必确认区域参数和你实际部署扩展的区域一致,若你部署时选的是
us-central1就将参数改为us-central1 - 本地开发时如果仍有跨域问题,可以使用Firebase本地模拟器调试云函数,避免跨域限制
内容的提问来源于stack exchange,提问作者tmst
相关产品推荐
相关产品推荐

