Я работаю над проектом Angular, который развернут на Firebase. Во всех руководствах по Firebase предлагается следующий способ хранения Firebase в app.config.ts:
export const appConfig: ApplicationConfig = {
providers: [
importProvidersFrom(
provideFirebaseApp(() => initializeApp(environment.firebase)), /* The problem line */
provideFirestore(() => getFirestore()),
),
provideRouter(routes)
],
};
В настоящее время у меня есть ошибка, которая отмечена в VS Code и сообщается во время ng serve: «Аргумент типа «EnvironmentProviders» не может быть назначен параметру типа «ImportProvidersSource».ts(2345)»
И я понятия не имею, что делать и как это решить. Я надеюсь, что кто-то здесь может помочь мне с этим.
Я много раз пробовал разные вещи. Я полностью удалил и воссоздал свой проект Firebase, свое приложение в Firebase, свой проект Angular. Ничего не работает.
Если я удалю проблемную строку, то следующая сообщит о той же проблеме.





Привет, я облако, это может вам помочь, у меня была та же проблема, что и у меня: проверьте версию angular fire package.json, потому что последняя версия 17.1.0 создает эту проблему с ImportProvidersSource, я попробовал эту версию 17.0.1. Вы можете установить следующим образом: npm i @angular/[email protected], и все будет работать, попробуйте новый проект.
Надеюсь, это может вам помочь.
Ваш ответ можно улучшить, добавив дополнительную вспомогательную информацию. Пожалуйста, отредактируйте , добавив дополнительную информацию, например цитаты или документацию, чтобы другие могли подтвердить правильность вашего ответа. Более подробную информацию о том, как писать хорошие ответы, вы можете найти в справочном центре.
У меня такая же проблема.
Это относится к версии Angular, а не к angular/fire, чтобы решить проблему, просто удалите importProvidersFrom, поскольку он больше не нужен.
TS2345: Argument of type 'EnvironmentProviders' is not assignable to parameter of type 'ImportProvidersSource'. [plugin angular-compiler]
[ng]
[ng] src/main.ts:63:47:
[ng] 63 │ ...orRoot(), provideFirebaseApp(() => initializeApp(environment.fi...
import { enableProdMode, importProvidersFrom, isDevMode } from "@angular/core";
import { bootstrapApplication } from "@angular/platform-browser";
import "zone.js";
import {
RouteReuseStrategy,
provideRouter
} from "@angular/router";
import { IonicModule, IonicRouteStrategy } from "@ionic/angular";
import { providePerformance, getPerformance } from "@angular/fire/performance";
import { routes } from "./app/app.routes";
import { AppComponent } from "./app/app.component";
import { environment } from "./environments/environment";
import { HTTP_INTERCEPTORS, provideHttpClient, withInterceptors, withInterceptorsFromDi } from "@angular/common/http";
import { getApp, initializeApp, provideFirebaseApp } from "@angular/fire/app";
import {
getAuth,
indexedDBLocalPersistence,
initializeAuth,
provideAuth,
} from "@angular/fire/auth";
import { getFirestore, provideFirestore } from "@angular/fire/firestore";
import { provideStorage, getStorage } from "@angular/fire/storage";
import {
provideRemoteConfig,
getRemoteConfig,
} from "@angular/fire/remote-config";
import { provideMessaging, getMessaging } from "@angular/fire/messaging";
import { provideFunctions, getFunctions } from "@angular/fire/functions";
import { Capacitor } from "@capacitor/core";
import { FirebaseAuthentication } from "@awesome-cordova-plugins/firebase-authentication/ngx";
import { CacheInterceptor } from "./app/classes/interceptor/cache.interceptor";
import { ApiLibModule } from "api-package";
import { ErrorInterceptor } from "./app/classes/interceptor/error.interceptor";
import { CustomHeaderInterceptor } from "./app/classes/interceptor/custom-header.interceptor";
import { provideServiceWorker } from '@angular/service-worker';
if (environment.production) {
enableProdMode();
}
bootstrapApplication(AppComponent, {
providers: [
{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy },
FirebaseAuthentication,
ApiLibModule,
provideHttpClient(withInterceptorsFromDi()),
{
provide: HTTP_INTERCEPTORS,
useClass: CacheInterceptor,
multi: true,
},
{
provide: HTTP_INTERCEPTORS,
useClass: ErrorInterceptor,
multi: true,
},
{
provide: HTTP_INTERCEPTORS,
useClass: CustomHeaderInterceptor,
multi: true,
},
importProvidersFrom(IonicModule.forRoot(), provideFirebaseApp(() => initializeApp(environment.firebase)), provideAuth(() => {
if (Capacitor.isNativePlatform()) {
return initializeAuth(getApp(), {
persistence: indexedDBLocalPersistence,
});
}
else {
return getAuth(getApp());
}
}), provideFirestore(() => getFirestore()), provideFunctions(() => getFunctions()), provideMessaging(() => getMessaging()), providePerformance(() => getPerformance()), provideRemoteConfig(() => getRemoteConfig()), provideStorage(() => getStorage())),
provideRouter(routes),
provideServiceWorker('ngsw-worker.js', {
enabled: !isDevMode(),
registrationStrategy: 'registerWhenStable:30000'
})
],
});
Мой
@angular/fire— 17.0.1, и у меня все та же ошибка. Самое неприятное то, что у меня есть другой проект, который использует то же самое, и такой ошибки нет. Я уже скопировалpackage.jsonопределения оттуда, но все равно безуспешно.