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.
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.
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.
I am not sure this is correct, but it helps:
<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", };
<script src="https://www.gstatic.com/firebasejs/live/3.0/firebase.js"></script>
to local project fb/firebase.js
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{ // ... } }); }
Could this be because you defined the error as "err", but under errorMessage, "error.message" was the code? Not quite sure, but try this and see if it fixes:
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(error){
var errorCode = error.code;
var errorMessage = error.message;
console.log("ERROR");
console.log(errorCode, errorMessage);
});
});
Question is old and I didn't see any accepted answer. And for the other people who still face the same problem. This is what I did to resolve my issue.
npm install --save firebase
After that add
var firebase = require("firebase/app");
require("firebase/firestore");
require("firebase/auth");
Whatever module you want to use in your project, you can mentioned accordingly. Then initialise the firebase
const firebaseConfig = {
apiKey: "XXXXXXXXXXXXXXXXXXXXXXX",
authDomain: "XXXXXXXXXXXXXXX",
databaseURL: "https://XXXXXX.COM",
projectId: "XXXXXXXXX",
storageBucket: "XXXXXXXXX",
messagingSenderId: "XXXXXXXX",
appId: "XXXXXXXXXXXXX",
measurementId: "XXXXXXX"
};
// Initialize Firebase
firebase.initializeApp(firebaseConfig);
Later you can write your API to create user with email and password
app.post('/register', function(req, res) {
var emailId = req.email
var password = req.password;
firebase.auth().createUserWithEmailAndPassword(emailId, password).catch(function(error) {
// Handle Errors here.
console.log(error)
});
})
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.