【发布时间】:2017-01-16 18:24:11
【问题描述】:
我正在尝试创建一个使用“使用 Google 登录”按钮来触发 signInWithPopup(provider) 的 React 应用程序。但是每次我调用new firebaseApp.auth.GoogleAuthProvider() 我的控制台都会返回一个错误。我只是想console.log()result。
firebase_setup.js未捕获的 TypeError:_firebase_setup2.default.auth.GoogleAuthProvider 不是构造函数
import * as firebase from 'firebase';
const firebaseConfig = {
apiKey: "AIzaSyAKlWtFZvbvuNy2qC68Xt5xzaTQVyy9l2o",
authDomain: "doordash-ff045.firebaseapp.com",
databaseURL: "https://doordash-ff045.firebaseio.com",
storageBucket: "doordash-ff045.appspot.com",
};
const firebaseApp = firebase.initializeApp(firebaseConfig);
export default firebaseApp;
登录.js
import React, { Component } from 'react';
import { browserHistory } from 'react-router';
import firebaseApp from '../../../services/firebase_setup';
export default class Login extends Component {
componentDidMount() {
firebaseApp.auth().onAuthStateChanged(user => {
if (user) {
console.log(user);
browserHistory.push('/profile');
}
});
}
authenticate() {
var provider = new firebaseApp.auth.GoogleAuthProvider();
provider.addScope('profile');
provider.addScope('email');
firebaseApp.auth().signInWithPopup(provider)
.then(result => {
console.log(result);
})
}
render() {
return (
<div>
<h1>Login Page</h1>
<button onClick={this.authenticate.bind(this)}>
Login with Google
</button>
</div>
);
}
}
我将不胜感激任何对此问题的见解!我查阅了许多教程,但在尝试声明 provider 变量时总是遇到同样的错误。
【问题讨论】:
-
前段时间有类似的问题,我的问题是使用旧文档和最新版本的 firebase api,它不再支持构造函数
new Firebase... -
@Davidlrnt 感谢您的快速回复!不过我正在使用新文档。
-
console.log(typeof firebaseApp.auth.GoogleAuthProvider)寻找线索。 -
@JaredSmith 谢谢你,但不幸的是我得到了和以前一样的错误
-
@szier 你必须把它放在 before 你尝试调用它。一旦抛出错误,除非它被捕获,否则该脚本中的其余代码将不会运行。
标签: javascript reactjs firebase firebase-authentication