【问题标题】:TypeError: firebase.auth() is not a function类型错误:firebase.auth() 不是函数
【发布时间】:2019-10-23 02:16:47
【问题描述】:

我正在设置一个新的 firebase 项目。在项目中,我尝试使用 firebase.auth() 使用用户电子邮件和密码创建一个新用户。但是,当我使用 firebase serve 并使用邮递员中的链接进行发布请求时,我收到一条错误消息,提示 firebase.auth 不是函数。

我相信有关于这个问题的问题,但是我尝试了他们提供的所有解决方案,但没有一个对我有用。

我试过了: - 添加需要 firebase/auth - 删除节点模块并重新安装 firebase 和 firebase 功能 - 以不同的顺序导入firebase和函数 - 以不同的顺序安装firebase和功能 - 创建一个新项目并从头开始安装 firebase 和函数

const firebase = require('firebase');
const config = {
    apiKey: "xxxxx,
    authDomain: "xx",
    databaseURL: "xxxx",
    projectId: "xxxx",
    storageBucket: "xxxx",
    messagingSenderId: "xxx",
    appId: "xxxxxx"
};

firebase.initializeApp(config);

const functions = require('firebase-functions');
const admin = require('firebase-admin');
const app = require('express')();

admin.initializeApp();

//Signup route

app.post('/signup', (req, res) => {
    const newUser = {
        email: req.body.email,
        password: req.body.password,
        confirmPassword: req.body.confirmPassword,
        handle: req.body.handle,
    }

    // TODO: validate data

    firebase.auth().createUserWithEmailAndPassword(newUser.email, newUser.password)
    .then(data => {
        return res.status(201).json({ message: `user ${data.user.uid} signed up successfully`})
    })
    .catch(err => {
        console.error(err);
        return res.status(500).json({error: err.code});
    });
});

预期结果:在邮递员上获得状态 201 并在 firebase 中创建新用户

实际结果:TypeError: firebase.auth is not a function。在控制台和邮递员中。

【问题讨论】:

标签: reactjs firebase firebase-authentication google-cloud-functions firebase-admin


【解决方案1】:

你应该明白Firebase JavaScript SDKFirebase Admin SDK for Node的区别。

Firebase JavaScript SDK 用于客户端。

Firebase Admin SDK 用于服务器端(如 Cloud Functions)。

所以在你的情况下,你应该使用 admin.auth().createUser()

见:

【讨论】:

    【解决方案2】:

    您似乎想使用客户端 sdk 而不是服务器来实例化应用程序。

    您需要使用 private key instead 来访问您的 Firebase 控制台 -> Project Overview -> Service accounts -> Generate new private key

    然后在您下载并将密钥包含在您的项目中之后:

    const admin = require('firebase-admin')
    const serviceAccount = require('your_firebase_key/path/goes/here')
    admin.initializeApp({
       credential: admin.credential.cert(serviceAccount)
    })
    

    祝你好运!

    【讨论】:

      【解决方案3】:

      我可以通过安装firebasefirebase-tools 来解决这个问题。我最初只安装了firebase-tools。尝试运行npm i firebase,重启服务器firebase serve,看看是否还有问题。

      【讨论】:

        猜你喜欢
        • 2019-12-27
        • 1970-01-01
        • 2018-07-13
        • 2017-03-08
        • 2021-02-24
        • 2018-10-13
        • 2016-02-26
        • 2013-04-01
        • 2016-03-06
        相关资源
        最近更新 更多