ユーザー管理に関するFirebaseのドキュメントに従っています
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);
});
});
次のエラーが発生します
undefined is not a function
TypeError: undefined is not a function
at d:\Users\Kitty\Code\Practice2\routes\index.js:27:21
少し調べてみると、undefinedは関数ではなく、基本的にはnullポインター例外のjavascriptバージョンです(間違っている可能性があります)
Firebaseでサービスアカウントとプロジェクトを設定しました。私はこれをローカルホストで実行しています。ありがとう。何が機能していないかをテストする方法がわからないため、主にデバッグのヒントを探しています。
まだ問題を修正していない場合は、なぜこのようなエラーが発生するのかがわかりました。これは、実際には関数ではないためです。
サーバーリファレンスを使用する必要がある場合は、ガイドとしてWebリファレンスを使用しています: https://firebase.google.com/docs/reference/node/firebase.auth.Auth 。
ご覧のとおり、Firebase.auth.Authは、Web APIと比較すると、Node.js APIにはそれほど多くないため、大きく異なります。サーバーAPIを使用する場合は、ここでは詳しく調べていないトークンを処理する必要があります。一方、意図したことを実行するWebAPIを使用することもできます。
更新
Node.jsのfirebase3.4.1またはそれ以前に、createUserWithEmailAndPassword
が利用可能になりました。
オリジナル
Node.jsのfirebase3.1.0の時点では、createUserWithEmailAndPassword
はまだサポートされていません。 Firebase Googleグループの回答によると、3.xライブラリの機能がすべてのプラットフォームで同等であるとは限りません。 RESTインターフェースはユーザー作成をサポートしますが、Node.jsライブラリーを使用する場合とは明らかに異なるアプローチです。
https://groups.google.com/forum/#!forum/firebase-talk にアクセスし、createUserWithEmailAndPasswordを検索して、そのディスカッションの最新情報を入手してください。
これが正しいかどうかはわかりませんが、次のことに役立ちます。
<script src="https://www.gstatic.com/firebasejs/live/3.0/firebase.js"></script>
および構成:
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>
ローカルプロジェクト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{
// ...
}
});
}
これは、エラーを「err」と定義したが、errorMessageの下で「error.message」がコードだったことが原因である可能性がありますか?よくわかりませんが、これを試して、修正されるかどうかを確認してください。
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);
});
});