2016-06-03 1 views
2

Ich habe das folgende Stück Code, den ich versuche, einen neu registrierten Benutzer zu authentifizieren zu verwenden, obwohl es zu Feuerbasis selbst initialisiert wird, um diesen Fehler auftauchen:Uncaught Referenzfehler: Firebase ist nicht definiert

Uncaught ReferenceError: firebase is not defined

Unten ist mein Code:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" > 
<head> 
    <title>register</title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script> 
    <script src='https://cdn.firebase.com/js/client/2.4.2/firebase.js'></script> 
</head> 
<body> 
    <script> 
     var config = { 
      databaseURL: 'https://apcs-4bfaa.firebaseio.com/' 
     }; 
     firebase.initializeApp(config); 

     var ref = new Firebase("https://apcs-4bfaa.firebaseio.com/"); 

     function registerUser() { 
      var email = document.getElementById("email").value; 
      var password = document.getElementById("password").value; 
      ref.auth().createNewUserWithEmailAndPassword(email, password); 
     } 
    </script> 

    <div class="form"> 
     <div id="error"></div> 
     <form onsubmit="registerUser();"> 
      <label>Email:</label> 
      <input type="text" name="email" id="email"><br> 
      <label>Password:</label> 
      <input type="password" name="pwd" id="password"><br> 
      <input type="submit" value="Sign Up"><br> 
     </form> 
    </div> 
</body> 
</html> 
+0

Die [Web Quickstart] (https://www.firebase.com/docs/web/quickstart.html) zeigt keinen Verweis auf ein 'Firebase'-Objekt und alles scheint die gleiche URL zweimal zu definieren. Tut 'ne neue Firebase()' alles nicht? –

+0

@ ÁlvaroGonzález Es gibt ein neues 'SDK', das das 'firebase'-Objekt enthält. Weitere Informationen finden Sie unter https://firebase.google.com –

+0

Sie verwenden eine ziemlich alte Dokumentation. Stellen Sie sicher, dass Sie das neueste (für jedes Framework) verwenden, um sicherzustellen, dass alles ordnungsgemäß funktioniert. @DavidEast hat die richtige Antwort. –

Antwort

8

Ihr Code ist zwischen dem älteren 2.4.2 API und das SDK 3.0 gemischt.

Es gibt keine new Firebase() Anrufe mehr. Sie müssen das neue SDK (derzeit 3.0.3) verwenden und anschließend Ihre App konfigurieren.

<script src="https://www.gstatic.com/firebasejs/3.0.3/firebase.js"></script> 
<script> 
    // Initialize Firebase 
    var config = { 
    apiKey: '<your-api-key>', 
    authDomain: '<your-auth-domain>', 
    databaseURL: '<your-database-url>', 
    storageBucket: '<your-storage-bucket>' 
    }; 
    firebase.initializeApp(config); 
</script> 

Nach der Konfiguration können Sie dann Referenzen erstellen.

firebase.database().ref() 

in Ihrem Fall also wäre es:

<script> 
    var config = { 
     databaseURL: 'https://apcs-4bfaa.firebaseio.com/' 
    }; 
    firebase.initializeApp(config); 

    // new 3.0 SDK method! 
    var ref = firebase.database().ref(); 

    function registerUser() { 
     var email = document.getElementById("email").value; 
     var password = document.getElementById("password").value; 
     firebase.auth().createNewUserWithEmailAndPassword(email, password); 
    } 
</script> 

Check out the docs for more info.

+0

Nein. Es heißt ref.auth() ist keine Funktion. –

+0

Entschuldigung, ich habe den Code aus Ihrer Probe kopiert und eingefügt. Es musste auf 'firebase.auth()' not 'ref.auth()' aktualisiert werden. –