Javascript SDK更新后出现“firebase.auth不是函数”错误
我使用Firebase JS sdk进行web开发已经一年没有任何问题了。从版本5.3.1更新代码以使用最新的6.5.0 SDK版本后,出现以下错误:Javascript SDK更新后出现“firebase.auth不是函数”错误,javascript,firebase,firebase-authentication,Javascript,Firebase,Firebase Authentication,我使用Firebase JS sdk进行web开发已经一年没有任何问题了。从版本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
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已添加到配置变量中。在更新之前,我没有任何appid,我假设它与新的Firebase功能或类似功能有关
我的问题是,SDK的初始化是否发生了一些变化,比如应该链接更多的SDK?还是JS函数名发生了变化?我不了解整个情况,因为在我更改SDK版本之前,一切都很正常,所以新SDK肯定有什么问题。更改此:
<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>
更改此项:
<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>
如CDN选项卡中所述,仅导入firebase-app.js是不够的:此外,您需要导入要使用firebase Auth、Firestore等的firebase产品的所有库
因此,在您的情况下,您应该执行以下操作:
<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。如CDN选项卡中所述,仅导入firebase-app.js是不够的:此外,您还需要导入要使用firebase Auth、Firestore等的firebase产品的所有库
因此,在您的情况下,您应该执行以下操作:
<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