[英]How does firebase.auth().createUserWithEmailAndPassword() works?
[英]firebase.auth().createUserWithEmailAndPassword Undefined is not a function
我正在關注有關用戶管理的 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 is not a function 基本上是空指針異常的javascript版本(可能是錯誤的)
我已經在 firebase 上配置了我的服務帳戶和項目。 我在本地主機上運行它。 謝謝。 我主要是在尋找調試技巧,因為我不確定如何測試哪些不起作用。
如果你還沒有解決這個問題,我會發現為什么它會給出這樣的錯誤,那是因為它真的不是一個函數。
當您需要使用服務器參考時,您將使用 Web 參考作為指南: https : //firebase.google.com/docs/reference/node/firebase.auth.Auth 。
如您所見,與 Web API 相比,Node.js API 上的 firebase.auth.Auth 有很大不同,因為其中沒有太多內容。 現在你必須處理令牌,如果使用服務器 API,我還沒有深入研究。 另一方面,您可以只使用 Web API,它可以完成您想要做的事情。
更新
在用於 Node.js 的 firebase 3.4.1 或之前的某個時間, createUserWithEmailAndPassword
變得可用。
原創
從用於 Node.js 的 firebase 3.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);
});
});
問題很老,我沒有看到任何被接受的答案。 對於仍然面臨同樣問題的其他人。 這就是我為解決我的問題所做的。
npm install --save firebase
之后添加
var firebase = require("firebase/app");
require("firebase/firestore");
require("firebase/auth");
無論你想在你的項目中使用什么模塊,你都可以相應地提及。 然后初始化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);
稍后您可以編寫 API 以使用電子郵件和密碼創建用戶
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)
});
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.