【问题标题】:Firebase is not a constructorFirebase 不是构造函数
【发布时间】:2016-04-24 13:25:49
【问题描述】:

我正在尝试将 Firebase 集成到我的 Angular 2 应用程序中,但我不断收到 Firebase is not a constructor 的错误消息。以下是我所做的:

  1. 使用 bower 安装了 firebase
  2. 引用了 index.html 中的脚本。
  3. 安装 firebase 环境类型
  4. 创建了 Firebase 服务
  5. 通过bootstrap()提供
  6. 将其注入组件中

FirebaseService.ts

@Injectable()
export class FirebaseService
{
    dataRef: Firebase;
    constructor() {
        this.dataRef = new Firebase('https://boiling-inferno-1117.firebaseio.com/votes');
    }
}

boot.ts

bootstrap(App, [HTTP_PROVIDERS, 
    ROUTER_PROVIDERS, 
    IdentityService, 
    ApiService, 
    UrlService, 
    provide(FirebaseService, {useValue: new FirebaseService()})
])
.catch(err => console.error(err));

app.ts

@Component({
    selector: 'app',
    templateUrl: 'app/app.html',
    directives: [AuthRouterOutlet, ROUTER_DIRECTIVES]
})
export class App {        
    constructor(private firebase:FirebaseService)
    {

    }        
}

Systemjs 配置:

System.config({
    defaultJSExtensions: true,
    map: {
        'jquery': 'vendors/js/jquery',
        'firebase': 'vendors/js/firebase'
    },
    packages: {
        angular2: { defaultExtension: false },
        rxjs: { defaultExtension: false }
    }
});

并像下面这样导入Firebase

import * as Firebase from 'firebase';

非常感谢任何关于我可以做些什么来解决这种情况的建议。

【问题讨论】:

  • 我们可以假设:provide(FirebaseService, {useValue: new FirebaseService()}) 是一个错字吗?因为您应该使用提供程序,然后它需要一个数组。提供者:[FirebaseService]
  • 能否提供您的 SystemJS 配置?以及导入 Firebase 类的方式?谢谢!
  • @R.Richards 也试过了。同样的错误。

标签: typescript firebase angular


【解决方案1】:

我会这样配置 Firebase:

System.config({
  map: {
    firebase: '/node_modules/firebase/lib/firebase-web.js',
    (...)
  },
  (...)
});

并像这样在 TypeScript 文件中导入它:

import * as Firebase from 'firebase';

详情请参阅 Angularfire2 的文档:

【讨论】:

  • 我有一个 gulp 任务,将 firebase-web.js 文件从 node_modules 文件夹复制到我的 dist/vendors/js 目录中。因此,它似乎与您展示的内容基本相同。我错了吗?
  • 实际上您在 SystemJS 配置中指定了文件夹而不是 js 文件 ;-) 您需要映射 js 文件。
  • vendors/js/firebase 这里的 firebase 是像 firebase.js 这样的文件名。因为,我启用了defaultJSExtensions: true .js 似乎是为我附加的。这就是为什么我的配置中的 jquery 可以正常工作的原因。
猜你喜欢
  • 2020-03-30
  • 2021-10-16
  • 2020-02-19
  • 2017-01-16
  • 2016-11-07
  • 2016-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多