首页 > 解决方案 > 指示本地模拟的 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
    });
});

该函数被调用,但它不会在 auth 模拟器上创建用户,而是在生产中创建用户。

我希望在 auth 模拟器上创建我的用户,以便它可以在我的 functions/index.js 中触发 auth 函数

例如:

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 使用本地身份验证模拟器?

标签: javascriptnode.jsfirebase

解决方案


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

npm install firebase-admin@latest

推荐阅读