NullInjectorError: Нет поставщика для AngularFireAnalytics! Angular 8 - PullRequest
0 голосов
/ 16 января 2020

При запуске 'npm test' я получаю эту ошибку:

NullInjectorError: StaticInjectorError (DynamicTestModule) [ComparePageComponent -> AngularFireAnalytics]: StaticInjectorError (Платформа: ядро) [ComparePageComponent -> NuclearFire: AngularFector : Нет поставщика для AngularFireAnalytics! Свойства ошибки: Object ({ngTempTokenPath: null, ngTokenPath: ['ComparePageComponent', Function]})

app.module.ts

import {AngularFireModule} from "@angular/fire";
import {AngularFireAnalyticsModule, AngularFireAnalytics} from "@angular/fire/analytics";

@NgModule({
   imports: [
   .....
       AngularFireModule.initializeApp(environment.firebase),
       AngularFireAnalyticsModule,
   ],
   providers: [
      AngularFireAnalytics,
      ...fromServices.services,
   ],

firebase.service.ts

import { Injectable } from '@angular/core';
import { AngularFireAnalytics } from "@angular/fire/analytics";

@Injectable({ providedIn: 'root' })
export class FirebaseService {

    constructor(private analytics: AngularFireAnalytics) {}

      public logEvent(eventName: string, params: {}) {

          this.analytics.logEvent(eventName, params).then( res => {
             console.log('event registered', eventName, params);
          })
          .catch(error => {
             console.log('error', error.message);
          });
      }
}

compare-page.component.ts

import {Component, OnDestroy, OnInit} from '@angular/core';
import {FirebaseService} from "../../../services/firebase.service";

export class ComparePageComponent implements OnInit, OnDestroy {

constructor(private firebaseService: FirebaseService) {
     this.firebaseService.logEvent('test', {});
}

У вас есть идеи, чего не хватает?

Я использовал этот урок: https://www.positronx.io/firebase-authentication-in-angular-8-with-angularfire2/

1 Ответ

1 голос
/ 16 января 2020

Нет провайдера под названием AngularFireAnalytics. Поэтому вам нужно изменить массив providers на следующее:

  providers: [
      ...fromServices.services,
   ],

Затем, чтобы использовать Firebase Analytics, сделайте следующее в компоненте:

import { AngularFireAnalytics } from '@angular/fire/analytics';

constructor(analytics: AngularFireAnalytics) {
  analytics.logEvent('custom_event', { ... });
}

Проверьте здесь:

https://github.com/angular/angularfire/blob/master/docs/analytics/getting-started.md

...