Внедрение нескольких перерывов в работе приложений в магазине - PullRequest
0 голосов
/ 25 июня 2019

В основном мне нужно использовать несколько приложений 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изменить поведение.

firestore is not a function

1 Ответ

1 голос
/ 26 июня 2019

Это потому, что базовая библиотека firebase не включает библиотеку firestore изначально.Чтобы решить вашу проблему:

import 'firebase/firestore';
...