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

VueFire对接Firebase本地模拟器:认证功能配置问题求助

VueFire对接Firebase本地模拟器认证失败问题解决

问题概述

Firestore本地模拟器可正常工作,但认证功能始终指向Firebase生产服务器,无法对接本地认证模拟器。使用Vite作为开发服务器,已通过firebase init hosting完成配置,public目录指向./dist。

初始配置代码

firebase.json配置

{
  "firestore": {
    "rules": "firestore.rules",
    "indexes": "firestore.indexes.json"
  },
  "hosting": {
    "public": "./dist",
    "ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
    "frameworksBackend": {
      "region": "us-central1"
    }
  },
  "emulators": {
    "auth": {
      "host": "localhost",
      "port": 9099
    },
    "firestore": {
      "port": 8080
    },
    "hosting": {
      "port": 5002
    },
    "ui": {
      "enabled": true
    },
    "singleProjectMode": true
  }
}

main.ts配置

app.use(VueFire, {
  firebaseApp,
  modules: [VueFireAuth()]
})

初始firebase.ts配置

import { initializeApp } from 'firebase/app'

const firebaseConfig = {
  apiKey: 'my api key',
  authDomain: 'xxxxx.firebaseapp.com',
  projectId: 'xxxxx',
  appId: 'my app id'
}
export const firebaseApp = initializeApp(firebaseConfig)

SignUpPage.vue脚本代码

<script setup>
import { ref } from 'vue'
import { useFirebaseAuth } from 'vuefire'
import { createUserWithEmailAndPassword } from '@firebase/auth'

import BaseButton from '@/components/base/BaseButton.vue'
import BaseContainer from '@/components/base/BaseContainer.vue'
import BaseCard from '@/components/base/BaseCard.vue'
import BaseForm from '@/components/base/BaseForm.vue'
import BaseInput from '@/components/base/BaseInput.vue'

const newUser = ref({
  email: '',
  password: ''
})

const auth = useFirebaseAuth()

async function createUser() {
  createUserWithEmailAndPassword(auth, newUser.value.email, newUser.value.password)
    .then((userCredential) => {
      // Signed in
      const user = userCredential.user
      console.log(user)
      // ...
    })
    .catch((error) => {
      const errorCode = error.code
      const errorMessage = error.message
      console.log(`${errorCode}: ${errorMessage}`)
    })
}
</script>

解决方案

参考David East的视频内容,修改firebase.ts为以下代码后,认证功能成功对接本地模拟器:

import { initializeApp, getApps } from 'firebase/app'
import { getAuth } from 'firebase/auth'

function initialize(existingApp) {
  const firebaseApp = existingApp || initializeApp()
  const auth = getAuth(firebaseApp)
  return { firebaseApp, auth }
}

export function getFirebase() {
  const existingApp = getApps().at(0)
  return initialize(existingApp)
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 14:41:21