В основном мне нужно использовать несколько приложений Firebase, чтобы различать некоторые данные, которые поступают в различные проекты FireStore.Самостоятельная инъекция работала до тех пор, пока я не внедрил ее в производственную среду.Я нашел обходной путь, переключив конфигурацию angular.json на
"optimization": false
Очевидно, это вызывает другие проблемы, которые увеличивают размер пакета, например.
export const firstAppName = 'first';
export const secondAppName = 'second';
@Injectable({
providedIn: 'root',
useFactory: AngularFirestoreFirstFactory,
deps: [PLATFORM_ID, NgZone]
})
export class AngularFirestoreFirst extends AngularFirestore {}
export function AngularFirestoreFirstFactory(platformId: object, zone: NgZone) {
return new AngularFirestore(environment.firstAppName, firstAppName, true, null, platformId, zone, null);
}
@Injectable({
providedIn: 'root',
useFactory: AngularFirestoreSecondFactory,
deps: [PLATFORM_ID, NgZone]
})
export class AngularFirestoreSecond extends AngularFirestore {}
export function AngularFirestoreSecondFactory(platformId: object, zone: NgZone) {
return new AngularFirestore(environment.secondAppName, secondAppName, false, null, platformId, zone, null);
}
Это прекрасно работает в localhostна ng serve
.Проблемы начинают появляться, когда я развертываю в производственной среде или когда я запускаю локальный сервер с ng serve --prod
TypeError: firestore не является функцией
Что отличает его от внедрения зависимости с оптимизацией: true toизменить поведение.