angular - NullInjectorError : No provider for AngularFireAnalytics! Angular 8

标签 angular firebase webpack firebase-analytics

当运行“npm test”时,我收到此错误:

NullInjectorError:StaticInjectorError(DynamicTestModule)[ComparePageComponent -> AngularFireAnalytics]: StaticInjectorError(平台:核心)[ComparePageComponent -> AngularFireAnalytics]: NullInjectorError:没有 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/

最佳答案

没有名为 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

关于angular - NullInjectorError : No provider for AngularFireAnalytics! Angular 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59775637/

相关文章:

angular - 如何在 Angular 5 中路由到外部链接

javascript - 使用 *ngIf 加载微调器在函数执行期间未显示

java - 如何在 ListView 中从 Firebase 获取最后 50 个元素?

json - Firebase 如何在 Swift 中进行此类查询

javascript - 如何创建 Vue 3 自定义元素,包括子组件样式?

javascript - 如何使用 webpack 为输出文件添加前缀?

angular - Ionic 3、Angular 4 中的单例

Angular Object.getPrototypeOf : 'this' is not an Object in IE11

javascript - 重新连接到托管环境中的上一个 Puppeteer session

javascript - "TypeError: Invalid value used in weak set"使用 webpack 构建时