TypeError:firebase.auth()不是函数

时间:2019-06-07 14:48:47

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

我正在设置一个新的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不是函数。在控制台和邮递员中。

3 个答案:

答案 0 :(得分:0)

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

您需要使用Context才能进入Firebase控制台-> private key instead-> Project Overview-> Service accounts

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

Generate new private key

祝你好运!

答案 1 :(得分:0)

您应该了解Firebase JavaScript SDKFirebase Admin SDK for Node的区别。

Firebase JavaScript SDK用于客户端。

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

因此,在您的情况下,应使用admin.auth().createUser()

请参阅:

答案 2 :(得分:0)

我能够通过安装firebasefirebase-tools来解决此问题。我最初只安装了firebase-tools。尝试运行npm i firebase,重新启动服务器firebase serve,看看问题仍然存在。