问题
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.
回答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.
回答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.
回答3:
I am not sure this is correct, but it helps:
- 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",
};
- Copy firebase.js file from
<script src="https://www.gstatic.com/firebasejs/live/3.0/firebase.js"></script>
to local project fb/firebase.js
- 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{
// ...
}
});
}
回答4:
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);
});
});
来源:https://stackoverflow.com/questions/37504466/firebase-auth-createuserwithemailandpassword-undefined-is-not-a-function