我将Firebase JS sdk用于网络已经一年了。将代码从5.3.1
版本更新为使用最新的6.5.0
SDK版本之后,出现以下错误:
TypeError: firebase.auth is not a function
我知道该消息的含义,但我并不真正理解为什么。我检查了Firebase文档,并且函数和方法名称保持不变。
这是我以前的解决方法:
// HTML
<script src="https://www.gstatic.com/firebasejs/5.3.1/firebase-app.js"></script>
// JS
var config = {
apiKey: "...",
authDomain: "...",
databaseURL: "...",
projectId: "...",
storageBucket: "...",
messagingSenderId: "...",
};
firebase.initializeApp(config);
const email = txtEmail.value;
const pass = txtPassword.value;
const auth = firebase.auth();
firebase.auth().createUserWithEmailAndPassword(email, pass).catch(function(error) {
var errorCode = error.code;
var errorMessage = error.message;
if (errorCode == 'auth/weak-password') {
showAlert(errorMessage, 'Error!');
}
if (errorCode == 'auth/email-already-in-use') {
showAlert(errorMessage, 'Error!');
}
if (errorCode == 'auth/invalid-email') {
showAlert(errorMessage, 'Error!');
}
else {
// alert(errorMessage);
//alert(error);
}
});
firebase.auth().onAuthStateChanged(firebaseUser => {
if (firebaseUser) {
$.ajax({
type: "POST",
contentType: "application/json",
url: "/user/",
data: JSON.stringify({""),
success: function(data) {
},
async: false
});
这些是代码无效的更改部分:
// HTML
<script src="https://www.gstatic.com/firebasejs/6.5.0/firebase-app.js"></script>
// JS
var config = {
apiKey: "...",
authDomain: "...",
databaseURL: "...",
projectId: "...",
storageBucket: "...",
messagingSenderId: "...",
appid: "...."
};
仅版本号更改为6.5.0,并且appid已添加到config变量。在更新之前,我没有任何appid,我认为它与新的Firebase功能或类似功能有关。
我的问题是,随着SDK的初始化,是否发生了一些变化,例如应该链接更多的SDK?还是JS函数名称更改了?我不了解整个情况,因为在我更改SDK版本之前一切正常,因此新的SDK必须有某些功能。
答案 0 :(得分:2)
如doc(制表符“从CDN”中进行的说明)所述,仅导入firebase-app.js
是不够的:此外,您还需要导入您想要的Firebase产品的所有库。使用(Firebase身份验证,Firestore等)。
因此,在您的情况下,您应该执行以下操作:
<script src="https://www.gstatic.com/firebasejs/X.Y.Z/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/X.Y.Z/firebase-auth.js"></script>
其中X.Y.Z
是库的版本号,即在编写时为6.6.1。
答案 1 :(得分:0)
更改此:
<script src="https://www.gstatic.com/firebasejs/6.5.0/firebase-app.js"></script>
对此:
<script src="https://www.gstatic.com/firebasejs/6.6.1/firebase.js"></script>