【问题标题】:NullInjectorError: No provider for AngularFireAnalytics! Angular 8NullInjectorError:没有 AngularFireAnalytics 的提供者!角 8
【发布时间】:2020-05-03 15:35:57
【问题描述】:

运行“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);
          });
      }
}

比较-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/

【问题讨论】:

  • 你需要在ComparePageComponent模块中包含AngularFireAnalyticsModule,这样当依赖注入解析实例时它才可用,此外,你应该在ComparePageComponent模块中模拟FirebaseService然后@987654329 @ 将不再是依赖项

标签: angular firebase webpack firebase-analytics


【解决方案1】:

没有名为AngularFireAnalytics 的提供程序。因此,您需要将providers 数组更改为以下内容:

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

然后要使用 Firebase 分析,请在组件中执行以下操作:

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

【讨论】:

  • 如果我从提供者中删除 'AngularFireAnalytics' 也是同样的错误。
  • 这是什么fromServices.services
  • 其他服务:
  • 从 './ipc.service' 导入 { IpcService };从 './sync.service' 导入 { SyncService };从 './app-settings.service' 导入 { AppSettingsService };从'./firebase.service'导入{ FirebaseService };导出常量服务:any[] = [IpcService, SyncService, AppSettingsService, FirebaseService];从'./ipc.service'导出*;从'./sync.service'导出*;从'./app-settings.service'导出*;从'./firebase.service'导出*;
  • 你使用的是最新版本的 angularfire 吗?因为 AngularFireAnalytics 似乎是在 9 天前添加的,但可以肯定它不是提供者
猜你喜欢
  • 2020-10-26
  • 1970-01-01
  • 1970-01-01
  • 2019-11-16
  • 2021-01-20
  • 2019-06-25
  • 2018-09-19
  • 2018-05-02
  • 2020-12-25
相关资源
最近更新 更多