未捕获的 ReferenceError:firebase 未定义

raw*_*yad 1 javascript authentication firebase firebase-authentication

我正在尝试创建 Google 身份验证,但我复制var provider = new firebase.auth.GoogleAuthProvider();到我的 JavaScript 并且它一直告诉我Uncaught ReferenceError: firebase is not defined.

这是我的代码:

var provider = new firebase.auth.GoogleAuthProvider();

function signin(){

  firebase.auth().signInWithPopup(provider).then(function(result) {

  var token = result.credential.accessToken;
  var user = result.user;

}).catch(function(error) {

  var errorCode = error.code;
  var errorMessage = error.message;
  var email = error.email;
  var credential = error.credential;

}); 
}
Run Code Online (Sandbox Code Playgroud)

小智 7

导致此错误的 Firebase 的一个常见问题是您的脚本是否在 Firebase 之前加载。例如,当使用 Firebase 托管时,他们会创建这些标签:

  <script defer src="/__/firebase/6.0.2/firebase-app.js"></script>
  ...
  <script defer src="/__/firebase/init.js"></script>
Run Code Online (Sandbox Code Playgroud)

然后您还需要使用 defer 加载脚本

  <script defer src="js/app.js"></script>
Run Code Online (Sandbox Code Playgroud)


Dhr*_*uri 5

您收到此错误是因为firebase变量尚未在您运行代码的页面上实例化和初始化。为此,您需要-

  1. 包括相关的脚本-

    <script src="https://www.gstatic.com/firebasejs/4.1.3/firebase.js"></script> <script src="https://www.gstatic.com/firebasejs/4.1.3/firebase-auth.js"></script>

firebase.js包含firebase代表您的 Firebase 应用的变量。firebase-auth.js包含firebase.auth您的代码正在使用的库。

  1. 使用 - 初始化您的应用程序

    var config = {
        apiKey: "<API_KEY>",
        authDomain: "<PROJECT_ID>.firebaseapp.com",
        databaseURL: "https://<DATABASE_NAME>.firebaseio.com",
        storageBucket: "<BUCKET>.appspot.com",
        messagingSenderId: "<SENDER_ID>",
    };
    
    firebase.initializeApp(config);
    
    Run Code Online (Sandbox Code Playgroud)

要了解更多信息,请参阅 - https://firebase.google.com/docs/web/setup