SDK更新后出现“ firebase.auth不是函数”错误

时间:2019-09-16 12:35:32

标签: javascript firebase firebase-authentication

我将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必须有某些功能。

2 个答案:

答案 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>