Аргумент типа "EnvironmentProviders" нельзя назначить параметру типа "ImportProvidersSource".ts(2345) в проекте Angular Firebase

Я работаю над проектом 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. Ничего не работает.

Если я удалю проблемную строку, то следующая сообщит о той же проблеме.

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
4
0
2 050
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Привет, я облако, это может вам помочь, у меня была та же проблема, что и у меня: проверьте версию angular fire package.json, потому что последняя версия 17.1.0 создает эту проблему с ImportProvidersSource, я попробовал эту версию 17.0.1. Вы можете установить следующим образом: npm i @angular/[email protected], и все будет работать, попробуйте новый проект.

Надеюсь, это может вам помочь.

Мой @angular/fire — 17.0.1, и у меня все та же ошибка. Самое неприятное то, что у меня есть другой проект, который использует то же самое, и такой ошибки нет. Я уже скопировал package.json определения оттуда, но все равно безуспешно.

Igor Urdenko 17.05.2024 03:48

У меня такая же проблема.

Junaid Gul 27.05.2024 02:35
Ответ принят как подходящий

Это относится к версии Angular, а не к angular/fire, чтобы решить проблему, просто удалите importProvidersFrom, поскольку он больше не нужен.

Я только что обновил свое угловое приложение до 18.0.1 и получил эту ошибку

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...

Ниже приведен мой код в main.ts.

main.ts

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'
    })
],
  
});

Другие вопросы по теме