我将 Angular v16 与 Angular Fire v16 和 Firebase v9 结合使用。我按照说明进行了所有设置。我做了
firebase login
、firebase init
并将函数制作成打字稿。
然后我将 AngularFireFunctionsModule 导入到我的 app.module.ts 中:
imports: [
BrowserModule,
CommonModule,
HttpClientModule,
FormsModule,
FontAwesomeModule,
AppRoutingModule,
AngularFireModule.initializeApp(environment.firebase),
AngularFireFunctionsModule, //imported here
AngularFireAuthModule,
AngularFirestoreModule,
AngularFireStorageModule,
AngularFireDatabaseModule,
],
为了测试,我刚刚创建了这个简单的index.ts:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
exports.callMe = functions.https.onCall((data, context) => {
return data.name
});
我使用
firebase deploy
部署了它并且它有效。还检查了控制台网站,我可以在那里看到它。
我正在使用一个名为 bubbleService 的服务,它调用它:
import { Injectable, NgZone } from '@angular/core';
...
...
import { AngularFireFunctions } from '@angular/fire/compat/functions';
@Injectable({
providedIn: 'root'
})
export class BubbleService {
constructor(
...
public functions: AngularFireFunctions
) { }
callFunction(name: string): Promise<string> {
const callable = this.functions.httpsCallable('callMe');
return callable({ name }).toPromise().then((result) => {
return result.data as string;
}).catch((error) => {
console.error('Error calling function:', error);
throw error;
});
}
....
我的组件正在调用此服务:
this.bubbleService.callFunction('John Doe').then((data) => {
alert(data);
}).catch((error) => {
console.error('Failed to fetch greeting:', error);
});
但是现在当我运行这个时,我在网络控制台中收到此错误:
调用函数时出错:TypeError:app.functions 不是函数
我尝试了 Angular Fire 的多个版本,但没有成功。老实说,我不知道该怎么做或这意味着什么。
导入错误,需要修改如下!
之前:
import { AngularFireFunctions } from '@angular/fire/compat/functions';
之后:
import { AngularFireFunctions } from '@angular/fire/functions';