You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase注册功能报错:Uncaught (in promise) ReferenceError: exports is not defined

问题根源与解决方法

你遇到的ReferenceError: exports is not defined是因为把Firebase云函数的后端代码写在了前端浏览器环境中,具体问题点:

  • exports是Node.js模块系统的语法,前端浏览器(Vite打包的前端代码)不支持这个语法,仅Node.js环境(如后端服务器、云函数)会用到。
  • functions.auth.user().onCreate是Firebase云函数的用户创建触发器,这部分代码必须部署到Firebase云函数环境运行,不能在前端页面里执行。
  • admin.firestore()是Firebase Admin SDK,仅用于后端服务,前端应该用你已经导入的客户端Firestore SDK(db实例)。

修正方案1:前端直接创建用户文档(无需云函数)

如果你的需求只是在用户注册成功后写入基础用户信息到Firestore,直接用前端客户端SDK操作即可,不需要云函数。修改createUserWithEmailAndPassword的回调部分:

createUserWithEmailAndPassword(auth, email, password).then(async (cred) => {
    const overlay = document.getElementById('overlay');
    overlay.classList.add('hidden');
    // 注意:需提前获取overlayP元素,否则会引发新错误
    const overlayP = document.getElementById('overlayP');
    overlayP.classList.remove('hidden');
    signUpForm.reset();

    // 用前端Firestore实例创建用户文档
    await setDoc(doc(db, "users", cred.user.uid), {
        email: cred.user.email,
        uid: cred.user.uid,
    });
    // document.getElementById("signUpErr").innerHTML = "";
})
.catch(err => {
    document.getElementById("signUpErr").innerHTML = err.message;
});

修正方案2:使用Firebase云函数(适合需要后端逻辑的场景)

如果需要在用户创建时执行后端专属操作(比如设置默认用户角色、写入敏感数据),需要单独创建并部署云函数:

  1. 本地初始化Firebase云函数项目(需提前安装firebase-tools):
    firebase init functions
    
  2. 在functions/index.js中编写云函数代码:
    const functions = require("firebase-functions");
    const admin = require("firebase-admin");
    admin.initializeApp();
    
    exports.createUserDoc = functions.auth.user().onCreate(async (user) => {
        await admin.firestore().collection("users").doc(user.uid).set({
            email: user.email,
            uid: user.uid,
            // 可添加后端专属字段,比如默认角色
            role: "user"
        });
    });
    
  3. 部署云函数:
    firebase deploy --only functions
    
    部署完成后,用户注册成功时Firebase会自动触发该云函数,无需在前端写任何相关代码。

内容的提问来源于stack exchange,提问作者HarryNC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 06:15:40