有没有一种新的方法可以使用 AngularFire 7 导入 @angular/fire 模块?
Is there a new way to import @angular/fire module with AngularFire 7?
我在 @angular/fire
处理一个新项目时遇到了很多问题,并且遇到了找不到模块的错误。
我的项目包括:
"@angular/common": "~13.0.0",
"@angular/fire": "^7.2.0",
"@capacitor/core": "3.3.4",
"@ionic/angular": "^6.0.0"
但是,当我尝试编译该应用程序时,我收到了一些无法找到模块的错误,如下所示:
[ng] ./node_modules/@angular/fire/fesm2015/angular-fire-auth.js:9:0-93 - Error: Module not found: Error: Can't resolve 'rxfire/auth' in '/Users/me/Development/app/node_modules/@angular/fire/fesm2015'
[ng]
[ng] ./node_modules/@angular/fire/fesm2015/angular-fire-firestore.js:10:0-288 - Error: Module not found: Error: Can't resolve 'rxfire/firestore' in '/Users/me/Development/app/node_modules/@angular/fire/fesm2015'
[ng]
[ng] Error: node_modules/@angular/fire/firestore/rxfire.d.ts:1:261 - error TS2307: Cannot find module 'rxfire/firestore' or its corresponding type declarations.
[ng]
[ng] 1 import { collectionChanges as _collectionChanges, collection as _collection, sortedChanges as _sortedChanges, auditTrail as _auditTrail, collectionData as _collectionData, doc as _doc, docData as _docData, snapToData as _snapToData, fromRef as _fromRef } from 'rxfire/firestore';
关于如何修复或更正此问题的任何想法?我试图删除我的 node_modules 并重新安装,但这没有帮助。 @angular/fire 的文件夹出现在我的 node_modules 目录中。
这是我的 app.module:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouteReuseStrategy } from '@angular/router';
import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { environment } from '../environments/environment';
import { provideFirebaseApp, initializeApp } from '@angular/fire/app';
import { getFirestore, provideFirestore } from '@angular/fire/firestore';
@NgModule({
declarations: [AppComponent],
entryComponents: [],
imports: [
BrowserModule,
IonicModule.forRoot(),
AppRoutingModule,
provideFirebaseApp(() => initializeApp(environment.firebase)),
provideFirestore(() => getFirestore())
],
providers: [{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }],
bootstrap: [AppComponent],
})
export class AppModule {}
还有我的服务文件:
import { Injectable } from '@angular/core';
import { Firestore, collection, collectionData, doc, docData, addDoc, deleteDoc, updateDoc } from '@angular/fire/firestore';
import { Observable } from 'rxjs';
export interface Item {
id?: string;
active: boolean;
category: string;
location: string;
quantity: number;
title: string;
}
@Injectable({
providedIn: 'root'
})
export class FirestoreService {
constructor(private firestore: Firestore) { }
getItems(): Observable<Item[]> {
const itemsRef = collection(this.firestore, 'items');
return collectionData(itemsRef, { idField: 'id'}) as Observable<Item[]>;
}
getItemById(id: any): Observable<Item> {
const itemDocRef = doc(this.firestore, `items/${id}`);
return docData(itemDocRef, { idField: 'id' }) as Observable<Item>;
}
addItem(item: Item) {
const itemsRef = collection(this.firestore, 'items');
return addDoc(itemsRef, item);
}
deleteItem(item: Item) {
const itemDocRef = doc(this.firestore, `items/${item.id}`);
return deleteDoc(itemDocRef);
}
updateItem(item: Item) {
const itemDocRef = doc(this.firestore, `items/${item.id}`);
return updateDoc(itemDocRef, { active: item.active, category: item.category, location: item.location, quantity: item.quantity, title: item.title });
}
}
对我有用。
在你的 app.module.ts:
import { AngularFireModule } from '@angular/fire/compat';
import { AngularFirestoreModule } from '@angular/fire/compat/firestore';
import { environment } from '../environments/environment';
...
imports : [AngularFireModule.initializeApp(environment.firebase),
AngularFirestoreModule,...]
...
添加环境文件夹包含两个配置文件
environment.prod.ts 包含:
export const environment = {
production: true
};
和 environment.ts 包含您的 firebase 配置数据:
export const environment = {
production: false,
firebase: {
apiKey: 'fakej4WNtMJ_lLLjjizRCbsWABN4q-PrgMw',
authDomain: 'fake.firebaseapp.com',
projectId: 'fake-gabes',
storageBucket: 'fake.appspot.com',
messagingSenderId: '1111111111',
appId: '1:323232323:web:77777',
},
};
安装 npm i rxfire firebase rxjs --save
为我解决了这个问题。
我在 @angular/fire
处理一个新项目时遇到了很多问题,并且遇到了找不到模块的错误。
我的项目包括:
"@angular/common": "~13.0.0",
"@angular/fire": "^7.2.0",
"@capacitor/core": "3.3.4",
"@ionic/angular": "^6.0.0"
但是,当我尝试编译该应用程序时,我收到了一些无法找到模块的错误,如下所示:
[ng] ./node_modules/@angular/fire/fesm2015/angular-fire-auth.js:9:0-93 - Error: Module not found: Error: Can't resolve 'rxfire/auth' in '/Users/me/Development/app/node_modules/@angular/fire/fesm2015'
[ng]
[ng] ./node_modules/@angular/fire/fesm2015/angular-fire-firestore.js:10:0-288 - Error: Module not found: Error: Can't resolve 'rxfire/firestore' in '/Users/me/Development/app/node_modules/@angular/fire/fesm2015'
[ng]
[ng] Error: node_modules/@angular/fire/firestore/rxfire.d.ts:1:261 - error TS2307: Cannot find module 'rxfire/firestore' or its corresponding type declarations.
[ng]
[ng] 1 import { collectionChanges as _collectionChanges, collection as _collection, sortedChanges as _sortedChanges, auditTrail as _auditTrail, collectionData as _collectionData, doc as _doc, docData as _docData, snapToData as _snapToData, fromRef as _fromRef } from 'rxfire/firestore';
关于如何修复或更正此问题的任何想法?我试图删除我的 node_modules 并重新安装,但这没有帮助。 @angular/fire 的文件夹出现在我的 node_modules 目录中。
这是我的 app.module:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouteReuseStrategy } from '@angular/router';
import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { environment } from '../environments/environment';
import { provideFirebaseApp, initializeApp } from '@angular/fire/app';
import { getFirestore, provideFirestore } from '@angular/fire/firestore';
@NgModule({
declarations: [AppComponent],
entryComponents: [],
imports: [
BrowserModule,
IonicModule.forRoot(),
AppRoutingModule,
provideFirebaseApp(() => initializeApp(environment.firebase)),
provideFirestore(() => getFirestore())
],
providers: [{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }],
bootstrap: [AppComponent],
})
export class AppModule {}
还有我的服务文件:
import { Injectable } from '@angular/core';
import { Firestore, collection, collectionData, doc, docData, addDoc, deleteDoc, updateDoc } from '@angular/fire/firestore';
import { Observable } from 'rxjs';
export interface Item {
id?: string;
active: boolean;
category: string;
location: string;
quantity: number;
title: string;
}
@Injectable({
providedIn: 'root'
})
export class FirestoreService {
constructor(private firestore: Firestore) { }
getItems(): Observable<Item[]> {
const itemsRef = collection(this.firestore, 'items');
return collectionData(itemsRef, { idField: 'id'}) as Observable<Item[]>;
}
getItemById(id: any): Observable<Item> {
const itemDocRef = doc(this.firestore, `items/${id}`);
return docData(itemDocRef, { idField: 'id' }) as Observable<Item>;
}
addItem(item: Item) {
const itemsRef = collection(this.firestore, 'items');
return addDoc(itemsRef, item);
}
deleteItem(item: Item) {
const itemDocRef = doc(this.firestore, `items/${item.id}`);
return deleteDoc(itemDocRef);
}
updateItem(item: Item) {
const itemDocRef = doc(this.firestore, `items/${item.id}`);
return updateDoc(itemDocRef, { active: item.active, category: item.category, location: item.location, quantity: item.quantity, title: item.title });
}
}
对我有用。 在你的 app.module.ts:
import { AngularFireModule } from '@angular/fire/compat';
import { AngularFirestoreModule } from '@angular/fire/compat/firestore';
import { environment } from '../environments/environment';
...
imports : [AngularFireModule.initializeApp(environment.firebase),
AngularFirestoreModule,...]
...
添加环境文件夹包含两个配置文件 environment.prod.ts 包含:
export const environment = {
production: true
};
和 environment.ts 包含您的 firebase 配置数据:
export const environment = {
production: false,
firebase: {
apiKey: 'fakej4WNtMJ_lLLjjizRCbsWABN4q-PrgMw',
authDomain: 'fake.firebaseapp.com',
projectId: 'fake-gabes',
storageBucket: 'fake.appspot.com',
messagingSenderId: '1111111111',
appId: '1:323232323:web:77777',
},
};
安装 npm i rxfire firebase rxjs --save
为我解决了这个问题。