firebase.auth().createUserWithEmailAndPassword Undefined is not a function

16,843

Solution 1

If you haven't fixed the problem yet, I found out why it's giving such an error and that's because it really isn't a function.

You're using the Web reference as your guide when you need to be using the Server reference: https://firebase.google.com/docs/reference/node/firebase.auth.Auth.

As you can see, firebase.auth.Auth is a lot different on the Node.js API when compared to the Web API as there's not a lot in there. Now you have to deal with tokens, which I haven't looked deep into, if using the Server API. On the other hand, you can just use the Web API, which does things you intended to do.

Solution 2

Update
Sometime at or before firebase 3.4.1 for Node.js, createUserWithEmailAndPassword became available.

Original
As of firebase 3.1.0 for Node.js, createUserWithEmailAndPassword is not yet supported. According to a response on the firebase Google group, not all platforms have feature parity in the 3.x libraries yet. The REST interface does support user creation but is clearly a different approach than using the Node.js library.

Go to https://groups.google.com/forum/#!forum/firebase-talk and search for createUserWithEmailAndPassword for the latest on that discussion.

Solution 3

I am not sure this is correct, but it helps:

  1. In console.firebase.google.com get script:

<script src="https://www.gstatic.com/firebasejs/live/3.0/firebase.js"></script>

and Config:

var config = {
    apiKey: "xxxxxxxxxxxxxxx",
    authDomain: "project-nnnnnnnnnnn.firebaseapp.com",
    databaseURL: "https://project-nnnnnnnnnnn.firebaseio.com",
    storageBucket: "project-nnnnnnnnnnn.appspot.com",
};
  1. Copy firebase.js file from

<script src="https://www.gstatic.com/firebasejs/live/3.0/firebase.js"></script>

to local project fb/firebase.js

  1. In firebas-service.ts:

    var firebase = require('./fb/firebase');
// Initialize Firebase
var config = {
    apiKey: "xxxxxxxxxxxxxxx",
    authDomain: "project-nnnnnnnnnnn.firebaseapp.com",
    databaseURL: "https://project-nnnnnnnnnnn.firebaseio.com",
    storageBucket: "project-nnnnnnnnnnn.appspot.com",
};
firebase.initializeApp(config);

export function createUser (email : string, password:string){
    firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) {
        if (error.code){
            // Handle Errors here.
            var errorCode = error.code;
            var errorMessage = error.message;
            alert(errorMessage);
            console.log(errorMessage);
        }
        else{
            // ...
        }
    });
}
Share:
16,843
Script Kitty
Author by

Script Kitty

https://github.com/Graystripe17

Updated on July 20, 2022

Comments

  • Script Kitty
    Script Kitty almost 2 years

    I am following the firebase documentation on user management

    var firebase = require('firebase');
    
    // Initialize Firebase
    firebase.initializeApp({
        serviceAccount: "./<mysecreturledittedout>.json",
        databaseURL: "https://<mydatabaseurljusttobesafe>.firebaseio.com"
    });
    
    router.get('/create', function(req, res){
        var email = req.email;
        var password = req.password;
        firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(err){ // LINE 27 CRASH
            var errorCode = err.code;
            var errorMessage = error.message;
            console.log("ERROR");
            console.log(errorCode, errorMessage);
        });
    });
    

    I get the following error

    undefined is not a function
    
    TypeError: undefined is not a function
        at d:\Users\Kitty\Code\Practice2\routes\index.js:27:21
    

    From doing a little bit of research, I think undefined is not a function is basically a javascript version of a null pointer exception (could be wrong)

    I have configured my service account and project on firebase. I am running this on localhost. Thanks. I am looking primarily for debugging tips, as I'm not sure how to test what isn't working.

  • Script Kitty
    Script Kitty almost 8 years
    Sorry that did not fix the problem. I changed all of them to err. Thanks for your time
  • Matt Jensen
    Matt Jensen over 7 years
    The REST API does not support user creation anymore: stackoverflow.com/questions/36027535/…
  • JCarlosR
    JCarlosR over 7 years
    Using catch I can use a callback to handle errors, but how I can execute JS code when the registration was successful? Edit: I found stackoverflow.com/questions/38511285/…