指示本地模拟的 firebase 函数使用身份验证模拟器

时间:2021-01-17 16:51:12

标签: javascript node.js firebase

我正在使用 firebase 模拟器套件来测试我的应用。我已经设置了用于托管、身份验证、Firebase 和功能的模拟器。

当我尝试使用 firebase.auth().createUserWithEmailAndPassword() 从前端创建用户时,它工作正常。

所有其他模拟器也按预期工作..

我可以从我的前端调用一个可调用的函数:

在公共/app.js

const createUser = functions.httpsCallable('createUser');
createUser({
    username: username,
    email: email,
    password: password,
})

在函数/index.js 中

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();

exports.createUser = functions.https.onCall((data, context) => {
    // creates a new user
    return admin.auth().createUser({
        email: data.email,
        emailVerified: false,
        password: data.password,
        displayName: data.username,
        disabled: false
    });
});

此函数被调用,但它不会在身份验证模拟器上创建用户,而是在生产中创建。

我希望在身份验证模拟器上创建我的用户,以便它可以在我的 functions/index.js 中触发身份验证功能

例如:

exports.userCreated = functions.auth.user().onCreate(user => {
    // creates a firestore document in users collection
    return admin.firestore().collection('users').doc(user.uid).set({
        email: user.displayName
    });
});

似乎没有将 Node.js Firebase SDK 连接到身份验证模拟器 (admin.auth().useEmulator() is not defined) 的任何内容。

如何指示 Node Admin SDK 使用本地身份验证模拟器?

1 个答案:

答案 0 :(得分:0)

我遵循了@Vazgen 的回答,我可以确认将 firebase-admin 更新到最新版本可以修复它,在撰写本文时为 9.9.0 版。

npm install firebase-admin@latest