Ошибка углового впрыска AngularFirestore -> ID платформы InjectionToken` - PullRequest
0 голосов
/ 01 июня 2018

Я использую модуль angularfire2.Я создал FireQueryModule, который вызывает модуль angularfire2.FireQueryModule, который я ввел в мой AppModule.

Поток: AppModule -> FireQueryModule -> angularfire2

Если я использую службу AngularFirestore в моем FireQueryService, я получаю ошибку

AppComponent_Host.ngfactory.js? [sm]:1 ERROR Error: StaticInjectorError(AppModule)[AngularFirestore -> InjectionToken Platform ID]: 
  StaticInjectorError(Platform: core)[AngularFirestore -> InjectionToken Platform ID]: 
    NullInjectorError: No provider for InjectionToken Platform ID!
    at NullInjector.push../node_modules/@angular/core/fesm5/core.js.NullInjector.get (core.js:979)
    at resolveToken (core.js:1232)
    at tryResolveToken (core.js:1182)
    at StaticInjector.push../node_modules/@angular/core/fesm5/core.js.StaticInjector.get (core.js:1077)
    at resolveToken (core.js:1232)
    at tryResolveToken (core.js:1182)
    at StaticInjector.push../node_modules/@angular/core/fesm5/core.js.StaticInjector.get (core.js:1077)
    at resolveNgModuleDep (core.js:9217)
    at _createClass (core.js:9270)
    at _createProviderInstance$1 (core.js:9234)

Код модуля

import { NgModule, ModuleWithProviders } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FireQueryService } from './services/firebase.service';
import { FirebaseAppConfig, AngularFireModule } from 'angularfire2';
import { AngularFirestoreModule } from 'angularfire2/firestore';
import { AngularFirestore } from 'angularfire2/firestore';

@NgModule({})
export class FireQueryModule {
  static forRoot(config: FirebaseAppConfig): ModuleWithProviders {
    @NgModule({
      imports: [
        CommonModule,
        AngularFirestoreModule,
        AngularFireModule.initializeApp(config)
      ],
      providers: [AngularFirestore]
    })
    class RootModule { }
    return {
      ngModule: RootModule,
      providers: [FireQueryService]
    };
  }
}

Сервисный код

@Injectable()
export class FireQueryService {
  constructor(private db: AngularFirestore) { } // error here if i comment it works
}

Я не понимаю, где он ломается.

1 Ответ

0 голосов
/ 24 сентября 2018

Та же проблема, как ее решить:

Мой модуль Lib:

@NgModule({})
export class DomainLibModule {
  static forRoot(config: FirebaseAppConfig): ModuleWithProviders {
    @NgModule({
      imports: [
        CommonModule,
        AngularFireDatabaseModule,
        AngularFireModule.initializeApp(config)
      ],
      providers: [AngularFireDatabase]
    })
    class RootModule { }
    return {
      ngModule: RootModule,
      providers: [DomainLibService]
    };
  }
}

My Lib Package.json:

"peerDependencies": {
    "@angular/common": "6.x.x",
    "@angular/core": "6.x.x",
    "@angular/fire": "5.x.x",
    "@angular/platform-browser": "6.x.x",
    "@angular/platform-browser-dynamic": "6.x.x",
    "firebase": "5.x.x",
    "rxjs": "6.x.x"
  }

Итак, все мои зависимостипо моему заявлению.Я добавил платформу-браузер и платформу-браузер-динамику, потому что они являются зависимостями AngularFire (я не знаю, важно ли это)

Самое важное, вероятно, здесь , в моем приложении tsconfig.json

{
  "compilerOptions": {
    // ...
    "paths": {
      "@angular/*": [
        "./node_modules/@angular/*" // It could be an other path
      ]
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...