NullInjectorError:没有AngularFirestore的提供者

Dev*_*per 90 firebase angularfire2 angular google-cloud-firestore

我正在学习Angular寻找修复错误的帮助:我正在关注此链接:https://github.com/angular/angularfire2/blob/master/docs/install-and-setup.md 以创建一个角度带有angular2和angularfirestore2的小应用程序

但当我点击服务时,我在浏览器控制台中收到以下错误..

StaticInjectorError[AngularFirestore]: 
  StaticInjectorError[AngularFirestore]: 
    NullInjectorError: No provider for AngularFirestore!
    at _NullInjector.get (core.js:923)
    at resolveToken (core.js:1211)
    at tryResolveToken (core.js:1153)
    at StaticInjector.get (core.js:1024)
    at resolveToken (core.js:1211)
    at tryResolveToken (core.js:1153)
    at StaticInjector.get (core.js:1024)
    at resolveNgModuleDep (core.js:10585)
    at NgModuleRef_.get (core.js:11806)
    at resolveDep (core.js:12302)
Run Code Online (Sandbox Code Playgroud)

我试过谷歌搜索但没有找到确切的解决方案对我没用:(,

这是我遵循的:1)已安装的节点版本8.9.1 2)npm install -g @ angular/cli - > Version 1.5.2 3)ng new'project-name'4)npm install angularfire2 firebase --save

这是我的app.module.ts文件:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { AngularFireModule } from 'angularfire2';
import { environment } from '../environments/environment';




@NgModule({
  imports: [
    BrowserModule,
    AngularFireModule.initializeApp(environment.firebase)
  ],
  declarations: [ AppComponent ],
  bootstrap: [ AppComponent ]
})
export class AppModule {}
Run Code Online (Sandbox Code Playgroud)

app.component.ts:

import { Component } from '@angular/core';
import { AngularFirestore } from 'angularfire2/firestore';
import { Observable } from 'rxjs/Observable';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'app';

  constructor(db: AngularFirestore) {

  }
}
Run Code Online (Sandbox Code Playgroud)

environemnt.ts:

export const environment = {
  production: false,
  firebase: {
    apiKey: 'xxxxx',
    authDomain: 'aaaaaaa',
    databaseURL: 'bbbbbbbbbbbbbbbbbb',
    projectId: 'aaaaaaaaaaaaaa',
    storageBucket: 'aaaaaaaaaaaa',
    messagingSenderId: 'aaaaaaaaaaaaa'
  }
};
Run Code Online (Sandbox Code Playgroud)

然后ng服务,我收到上述错误..

Saj*_*ran 172

您应该添加providers: [AngularFirestore]app.module.ts.

@NgModule({
  imports: [
    BrowserModule,
    AngularFireModule.initializeApp(environment.firebase)
  ],
  declarations: [ AppComponent ],
  providers: [AngularFirestore],
  bootstrap: [ AppComponent ]
})
export class AppModule {}
Run Code Online (Sandbox Code Playgroud)

  • /sf/ask/3291833961/ (4认同)
  • 终于它与上面的链接一起工作了,谢谢@Sajeetharan (2认同)

sun*_*leo 17

我有同样的问题,下面已经解决了.

旧服务代码:

@Injectable()
Run Code Online (Sandbox Code Playgroud)

更新的工作服务代码:

@Injectable({
  providedIn: 'root'
})
Run Code Online (Sandbox Code Playgroud)

  • 如果可能值得注意这个变化的作用。在不添加“providedIn: 'root'”的情况下,我们将该类记录为可注入。添加“providedIn: 'root'”使得此类可以从 **root** 开始注入应用程序中的任何位置。 (3认同)

Rit*_*pta 8

简单的答案。

每当遇到NullInjector error。理由始终import/providersmissing

解决方案:

  1. 请将模块添加到文件imports内的数组中module.ts

  2. providers在文件内的数组中添加您要使用的服务modules.ts

@NgModule({})
export class SomeModule{
 `imports:[]`,
`providers: []`
}
Run Code Online (Sandbox Code Playgroud)


小智 7

打开:./src/app/app.module.ts
在顶部导入Firebase模块:

从'../environments/environment' 导入{ environment }; 从'angularfire2'
导入{ AngularFireModule }; 从'angularfire2/firestore'
导入{ AngularFirestoreModule };

非常重要:
记得更新NgModule中的'imports':

@NgModule({
  declarations: [
    AppComponent,
    OtherComponent // Add other components here
    ...
  ],
  imports: [
    BrowserModule,
    AngularFireModule.initializeApp(environment.firebase, 'your-APP-name-here'),
    AngularFirestoreModule
  ],
  ...
})
Run Code Online (Sandbox Code Playgroud)

尝试一下,它现在可以工作了.
有关详细信息,请参阅angularfire2文档:
https://github.com/angular/angularfire2/blob/master/docs/install-and-setup.md
祝您好运!


Gen*_*ene 5

对我来说奇怪的是我有provider:[],但是使用提供程序的 HTML 标记是导致错误的原因。我指的是下面的红框: 在此输入图像描述

事实证明,我在不同的组件中有两个类具有相同的“employee-list.component.ts”文件名,因此该项目编译得很好,但引用都搞砸了。


小智 5

添加AngularFirestoreModule.enablePersistence()导入部分解决了我的问题:

imports: [
    BrowserModule, AngularFireModule, 
    AngularFireModule.initializeApp(config),
    AngularFirestoreModule.enablePersistence()
]
Run Code Online (Sandbox Code Playgroud)