Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript SDK更新后出现“firebase.auth不是函数”错误_Javascript_Firebase_Firebase Authentication - Fatal编程技术网

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

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

我使用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/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