AngularFire2错误" ReferenceError:firebase未定义"

时间:2017-01-24 23:32:09

标签: javascript angular firebase firebase-authentication angularfire2

我尝试使用AngularFire2

创建一个使用电子邮件/密码的用户

这是我单击注册组件中的提交按钮时抛出错误的代码:

firebase.auth().createUserWithEmailAndPassword(this.signupForm.value.email, this.signupForm.value.password).catch(function(error) {
  alert(error.message);
});
来自package.json的

版本:

angular: "^2.3.1",
"angularfire2": "^2.0.0-beta.7",
"firebase": "^3.6.6"

我从一开始就使用angularfire2实现电子邮件/通过身份验证时遇到了问题,而且我已经搜索了超过一个半小时寻找这个问题的答案(其中包括没有&#39) ; t似乎是对angularfire2的大量信息/支持?)

请帮忙! 我还在学习,这真让我难过。

这是控制台中的完整错误:

vendor.bundle.js:46373 ReferenceError: firebase is not defined
at SignupComponent.webpackJsonp.806.SignupComponent.signup        (http://localhost:4200/main.bundle.js:601:9)
at CompiledTemplate.proxyViewClass.View_SignupComponent0.handleEvent_0 (/AppModule/SignupComponent/component.ngfactory.js:152:34)
at CompiledTemplate.proxyViewClass.<anonymous> (http://localhost:4200/vendor.bundle.js:65473:37)
at SafeSubscriber.schedulerFn [as _next] (http://localhost:4200/vendor.bundle.js:79924:36)
at SafeSubscriber.__tryOrUnsub (http://localhost:4200/vendor.bundle.js:52413:16)
at SafeSubscriber.next  (http://localhost:4200/vendor.bundle.js:52362:22)
at Subscriber._next (http://localhost:4200/vendor.bundle.js:52315:26)
at Subscriber.next (http://localhost:4200/vendor.bundle.js:52279:18)
at EventEmitter.Subject.next (http://localhost:4200/vendor.bundle.js:52079:25)
at EventEmitter.emit (http://localhost:4200/vendor.bundle.js:79898:76)
at FormGroupDirective.onSubmit (http://localhost:4200/vendor.bundle.js:81620:23)
at Wrapper_FormGroupDirective.handleEvent (/ReactiveFormsModule/FormGroupDirective/wrapper.ngfactory.js:42:34)
at CompiledTemplate.proxyViewClass.View_SignupComponent0.handleEvent_0 (/AppModule/SignupComponent/component.ngfactory.js:150:42)
at CompiledTemplate.proxyViewClass.<anonymous> (http://localhost:4200/vendor.bundle.js:65473:37)
at HTMLFormElement.<anonymous> (http://localhost:4200/vendor.bundle.js:34579:53)

4 个答案:

答案 0 :(得分:2)

所以,结果是问题如下:

我最后修改了这个代码块:

firebase.auth().createUserWithEmailAndPassword(this.signupForm.value.email, this.signupForm.value.password).catch(function(error) {                    
  alert(error.message);
});

这个

this.af.auth.createUser(this.signupForm.value).catch(function(error) {
  alert(error.message);
});

问题在于我正在调用错误的对象firebase,当我应该一直在调用this.af.auth时,因为我定义了{{1}在我的构造函数中。

还有另一个错误,这就是我在angularfire2模块上调用错误的方法这一事实:

我用过

public af: AngularFire

我应该一直在使用

.createUserWithEmailAndPassword(email: email, password: password)

修复这两个问题使应用程序按预期工作,没有错误。

@sugarme 是正确的答案我刚刚在离开学校之前得出了同样的结论,所以我没有时间发布这个答案直到现在。

全部谢谢!

PS以下是我的完整.createUser({email, password})供参考:

signup.component

答案 1 :(得分:1)

您可以使用AngulareFire通过电子邮件/密码创建用户:

import { Component } from '@angular/core';
import { AngularFire, AuthProviders, AuthMethods, AngularFireModule } from 'angularfire2';
@Component({
        ...
    })
export class MyApp {
    constructor(af: AngularFire) {
    this.af.auth.createUser({ email: email, password: password})
        .then ((user) => {
            console.log(user);
        })
        .catch((error) => {        
            console.log(error);
            });

    }
}

如果您想使用firebase,请尝试在导入部分正下方声明变量firebasevar firebase = require("firebase"); // <-- Declare firebase variable here

它在我的工作组件中。让我知道结果。

答案 2 :(得分:0)

你安装了firebase吗?

npm install firebase --save

我知道它是angularfire2包的依赖。但是你的脚本没有找到它。

您是否知道并解决了问题: https://github.com/angular/angularfire2/issues/520

答案 3 :(得分:0)

你错过了将firebase导入页面

import { FirebaseProvider } from '../../providers/firebase/firebase';
import firebase from 'firebase';