【问题标题】:Function calls are not supported in decorators but 'AngularFireModule' was called装饰器不支持函数调用,但调用了“AngularFireModule”
【发布时间】:2018-06-30 13:00:38
【问题描述】:

我使用 Firebase 作为 Angular 5 应用程序的数据库。我能够使用 ng build 构建、运行和部署项目。但是,当我使用 --prod 标志构建时,出现以下错误。

使用:

ng build --prod

我收到以下错误:

“FirebaseModule”函数模板编译期间出现错误 装饰器不支持调用,但“AngularFireModule”是 调用。

我不明白如何配置 AngularFire 模块以使其正常工作。

Firebase.Module.ts:

import { NgModule } from "@angular/core";
import { CommonModule } from "@angular/common";
import { environment } from "../environments/environment";       // Firebase config stored in environment file

import { AngularFireAuthModule } from "angularfire2/auth";
import { AngularFireModule } from "angularfire2/angularfire2";
import { AngularFirestoreModule } from "angularfire2/firestore";

@NgModule({
  imports: [
    AngularFireModule.initializeApp(environment.firebase),  // Error is here
    AngularFireAuthModule,
    AngularFirestoreModule
  ],
  exports: [AngularFireModule, AngularFireAuthModule, AngularFirestoreModule],
  providers: [],
  declarations: []
})
export class FirebaseModule {}

environment.ts(和 environment.prod.ts)

export const environment = {
     production: false,
     firebase: {
       apiKey: "...",
       authDomain: "...",
       databaseURL: "...",
       projectId: "...",
       storageBucket: "",
       messagingSenderId: "..."
     }
};

软件包版本

"angularfire2": "^5.0.0-rc.4",
"firebase": "^4.8.1",

AskFirebase

【问题讨论】:

  • 您解决了这个问题吗?我今天在使用 Ionic 3 和 Angular 5 时遇到了同样的问题。

标签: typescript firebase angularfire2 angular5


【解决方案1】:

ng build --prod 时我遇到了同样的错误,我必须通过更改 { AngularFireModule } 导入行来解决它

import { AngularFireModule } from "angularfire2/angularfire2";

import { AngularFireModule } from "angularfire2";

【讨论】:

  • 谢谢,如果它对我有用,我会尝试并标记为解决方案!感谢您的帮助!
  • 这并不能解决问题,它仍然是同样的问题
【解决方案2】:

我在 Angular 6 中遇到了同样的问题。看起来这是 ng-packagr 的错误。问题报告中的注释表明直接执行ngc时不会出现问题。

https://github.com/dherges/ng-packagr/issues/767

【讨论】:

  • 我能够在安装 @angularfire2@5.0.0-rc.9 后初始化 AngularFireModule,但它需要更改 AngularFireModule 的初始化方式。我删除了对静态方法 initializeApp 的调用并添加了一个提供程序... {provide: FirebaseOptionsToken, useValue: firebaseOptions}。 firebaseOptions 是传递给 initializeApp 的对象,FirebaseOptionsToken 可从 angularfire2 模块获得。
  • 嘿@scott_Anderson 我认为直接执行时问题不会得到解决。可能发生的情况是您安装了两个版本的ng。在“直接”构建时使用全局,而 npm 将使用本地 (node_modules) 之一。您能否验证两个版本,以检查版本更改是否解决了这个问题? TY
【解决方案3】:

更改构建脚本

来自

ng build --prod

ng build --prod --base-href=./ -aot=false

添加-aot=false 解决,但我认为这不是最好的解决方案。它应该将错误报告给 angularfire2 开发团队。

【讨论】:

    【解决方案4】:

    我也遇到了这个错误。 angularfire2 团队已经在 rc9 中修复了这个问题,现在它工作得很好。 只需使用此命令更新库

    npm install @angularfire2@5.0.0-rc.9

    希望这会有所帮助。

    【讨论】:

    • 你能提供更多细节吗?
    • 它现在可以工作了,你提到的版本都是正确的,只需要关闭我的可视化代码并打开它,然后它就可以开始工作了。非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    • 2020-12-29
    • 2018-06-11
    • 1970-01-01
    相关资源
    最近更新 更多