AngularFire2 初始化应用程序出错

AngularFire2 initializing app gives error

我试图在我的 Angular2 应用程序中初始化 AngularFire2,但出现以下错误。

ERROR in ./src/app/firebase/index.ts
Module build failed: Error: /Users/jaruesink/Documents/Projects/buckets/src/app/firebase/index.ts (16,17): Return type of exported function has or is using name 'ModuleWithProviders' from external module "/Users/jaruesink/Documents/Projects/buckets/node_modules/@angular/core/src/metadata/ng_module" but cannot be named.)
    at _checkDiagnostics (/Users/jaruesink/Documents/Projects/buckets/node_modules/@ngtools/webpack/src/loader.js:115:15)
    at /Users/jaruesink/Documents/Projects/buckets/node_modules/@ngtools/webpack/src/loader.js:140:17
 @ ./src/app/app.module.ts 15:0-48
 @ ./src/app/index.ts
 @ ./src/main.ts
 @ multi main

这是我的 Firebase 模块,我正尝试将其作为 initializeFirebase() 导入到我的 NgModule 中。

import { AngularFireModule, AuthProviders, AuthMethods } from 'angularfire2';

export const firebaseConfig = {
  FIREBASE STUFF GOES HERE
};

export const firebaseAuthConfig = {
  provider: AuthProviders.Facebook,
  method: AuthMethods.Redirect
}

export function initializeFirebase() {
  return AngularFireModule.initializeApp(firebaseConfig, firebaseAuthConfig);
}

谁能帮我解释一下我做错了什么,或者如果发生其他事情,我有什么办法可以解决吗?

谢谢!

我将所有配置内容放入与 NgModule 相同的文件中,然后它起作用了……我以前像这样将它分开并且起作用了,但我想这次不行。

放在外部文件中不起作用的原因与此功能有关:

export function initializeFirebase() {
  return AngularFireModule.initializeApp(firebaseConfig, firebaseAuthConfig);
}

声明未指定 return 类型,因此推断为 ModuleWithProviders - initializeApp 的 return 类型(以及错误)。

要解决这个问题,你可以指定return类型,这也意味着你需要添加一个导入:

import { ModuleWithProviders } from '@angular/core';
...
export function initializeFirebase(): ModuleWithProviders {
  return AngularFireModule.initializeApp(firebaseConfig, firebaseAuthConfig);
}

有关详细信息,请参阅此 GitHub issue comment