如何为Angular Fire Module的函数指定地域?
解决@angular/fire v6.1.5云函数地域配置问题
问题背景
使用@angular/fire(即AngularFireModule v6.1.5)时,尝试传递地域信息调用非默认(us-central1)地域的云函数,但配置后函数仍使用默认地域。
无效的地域配置写法
以下配置无法生效,即使能正确从Runtime Config中获取到目标地域值(如us-east4),云函数调用仍走默认地域:
import { REGION } from '@angular/fire/functions'; export class Region { public static get getRegion() { const storageService = new StorageService(); const runtimeConfig = storageService.secureStorage.getItem("runtimeConfig"); console.log(runtimeConfig); // { "functionsRegion": "us-east4" } const value = runtimeConfig?.["functionsRegion"] ?? "us-central1"; // "us-east4" console.log("getRegion: ", value) // us-east4 return value; } } @NgModule({ providers: [ { provide: REGION, useValue: Region.getRegion } ] })
问题根源与解决方法
通过以下两处修改解决了问题:
缺少
AngularFireFunctionsModule导入
需确保在模块中导入AngularFireFunctionsModule,否则地域配置无法被AngularFire的函数模块识别。错误使用原生Firebase库调用函数
直接使用原生firebase库调用函数会忽略AngularFire的地域配置,必须使用AngularFire提供的API:无效调用方式(仍用默认地域):
import firebase from "firebase"; firebase.functions().httpsCallable("helloWorld")(); // 始终使用us-central1有效调用方式(使用配置的地域):
// 组件构造函数注入AngularFireFunctions constructor(private fns: AngularFireFunctions) {} // 调用云函数 callHelloWorld() { const callable = this.fns.httpsCallable('helloWorld'); // 使用配置的地域(如us-east1) callable(null).subscribe(res => console.log({ res })); }
内容的提问来源于stack exchange,提问作者Omar Dulaimi
相关产品推荐
相关产品推荐

