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

Vue集成Firebase认证报错:Uncaught SyntaxError: ambiguous indirect export: default

问题

按照教程实现Vue项目的Firebase认证功能,编写了auth.js和main.js代码如下,但运行时出现错误:Uncaught SyntaxError: ambiguous indirect export: default

auth.js

import firebase from 'firebase'
import firebaseui from 'firebaseui';

const config = {
  apiKey: "AIzaSyBfEKjNqtQRdeRxd1ocNwAQjPMo80MUn70",
  authDomain: "qrpay-23f88.firebaseapp.com",
  databaseURL: "https://qrpay-23f88.firebaseio.com",
  projectId: "qrpay-23f88",
  storageBucket: "qrpay-23f88.appspot.com",
  messagingSenderId: "651606142877"
};

const auth = {
  context: null,
  uiConfig: null,
  ui: null,

  init(context) {
    this.context = context;

    firebase.initializeApp(config);
    this.uiConfig = {
      signInSuccessUrl: 'dashboard',
      signInOptions: [
        firebase.auth.FacebookAuthProvider.PROVIDER_ID,
        firebase.auth.GoogleAuthProvider.PROVIDER_ID,
        firebase.auth.EmailAuthProvider.PROVIDER_ID
      ]
    }
    this.ui = new firebaseui.auth.AuthUI(firebase.auth());

    firebase.auth().onAuthStateChanged((user) => {
      this.context.$store.dispatch('user/setCurrentUser')

      let requireAuth = this.context.$route.matched.some(record => record.meta.requireAuth)
      let guestOnly = this.context.$route.matched.some(record => record.meta.guestOnly)

      if(requireAuth && !user) this.context.$router.push('auth')
      else if (guestOnly && user) this.context.$router.push('dashboard')
    });
  },
  authForm(container) {
    this.ui.start(container, this.uiConfig);
  },
  user() {
    return this.context ? firebase.auth().currentUser : null;
  },
  logout() {
    firebase.auth().signOut();
  }
}

export default auth;

main.js

import Vue from 'vue'

import App from '@/App'

import {router} from '@/router'
import {store} from '@/store'
import auth from '@/auth'

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#app',
  store,
  router,
  beforeCreate () {
    auth.init(this)
  },
  template: '<App/>',
  components: { App }
})
解决方案

这个错误是因为你安装的Firebase版本是v9+(模块化版本),但代码沿用了v8及更早的命名空间写法(import firebase from 'firebase'),两者模块导出方式不兼容导致的。有两种可行解决方式:

方式一:降级到Firebase v8兼容版本

如果想保留现有代码结构,直接降级Firebase及FirebaseUI到对应版本:

npm install firebase@8.10.0 firebaseui@6.0.2 --save

安装完成后重启项目即可,无需修改现有代码。

方式二:适配Firebase v9+的模块化写法

如果想使用最新版本的Firebase,需要修改auth.js的导入和调用逻辑:

// auth.js
import { initializeApp } from 'firebase/app';
import { getAuth, onAuthStateChanged, signOut, FacebookAuthProvider, GoogleAuthProvider, EmailAuthProvider } from 'firebase/auth';
import * as firebaseui from 'firebaseui';

const config = {
  apiKey: "AIzaSyBfEKjNqtQRdeRxd1ocNwAQjPMo80MUn70",
  authDomain: "qrpay-23f88.firebaseapp.com",
  databaseURL: "https://qrpay-23f88.firebaseio.com",
  projectId: "qrpay-23f88",
  storageBucket: "qrpay-23f88.appspot.com",
  messagingSenderId: "651606142877"
};

const auth = {
  context: null,
  uiConfig: null,
  ui: null,
  firebaseAuth: null,

  init(context) {
    this.context = context;
    const app = initializeApp(config);
    this.firebaseAuth = getAuth(app);
    
    this.uiConfig = {
      signInSuccessUrl: 'dashboard',
      signInOptions: [
        FacebookAuthProvider.PROVIDER_ID,
        GoogleAuthProvider.PROVIDER_ID,
        EmailAuthProvider.PROVIDER_ID
      ]
    };
    this.ui = new firebaseui.auth.AuthUI(this.firebaseAuth);

    onAuthStateChanged(this.firebaseAuth, (user) => {
      this.context.$store.dispatch('user/setCurrentUser')

      let requireAuth = this.context.$route.matched.some(record => record.meta.requireAuth)
      let guestOnly = this.context.$route.matched.some(record => record.meta.guestOnly)

      if(requireAuth && !user) this.context.$router.push('auth')
      else if (guestOnly && user) this.context.$router.push('dashboard')
    });
  },
  authForm(container) {
    this.ui.start(container, this.uiConfig);
  },
  user() {
    return this.context ? this.firebaseAuth.currentUser : null;
  },
  logout() {
    signOut(this.firebaseAuth);
  }
}

export default auth;

修改后确保安装最新版依赖:

npm install firebase firebaseui --save

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 18:50:43