簡體   English   中英

firebase.auth().createUserWithEmailAndPassword Undefined 不是函數

[英]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 以獲取有關該討論的最新信息。

我不確定這是否正確,但它有幫助:

  1. 在 console.firebase.google.com 中獲取腳本:

 <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", };

  1. 復制 firebase.js 文件

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

到本地項目 fb/firebase.js

  1. 在 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{ // ... } }); }

這可能是因為您將錯誤定義為“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);
    });
});

問題很老,我沒有看到任何被接受的答案。 對於仍然面臨同樣問題的其他人。 這就是我為解決我的問題所做的。

  • 刪除 node_modules
  • 從 package.json 中刪除 firebase 並安裝最新的 firebase npm install --save firebase
  • 並再次運行 npm install 以便安裝所有其他依賴項

之后添加

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM