如果未在Firebase中验证,则尝试将用户重定向到另一个页面时出错

ndh0cuux  于 2022-11-17  发布在  其他
关注(0)|答案(1)|浏览(99)

我得到这个错误。
TypeError:无法读取未定义的属性(阅读'$router')
我想这是因为我没有在我的文件中导入任何与路由器有关的内容,但我想这很奇怪,因为我在其他页面中做了同样的事情,这个错误并没有发生。
firebase.js

// Import the functions you need from the SDKs you need
import { initializeApp } from "firebase/app";
import { getFirestore } from "firebase/firestore";
import { getAuth, onAuthStateChanged } from "firebase/auth";

// Your web app's Firebase configuration
export const firebaseConfig = {
  apiKey: process.env.API_KEY,
  authDomain: process.env.AUTH_DOMAIN,
  projectId: process.env.PROJECT_ID,
  storageBucket: process.env.STORAGE_BUCKET,
  messagingSenderId: process.env.MESSAGING_SENDER_ID,
  appId: process.env.APP_ID,
};

// Initialize Firebase
const app = initializeApp(firebaseConfig);
export const auth = getAuth(initializeApp(firebaseConfig));

const authenticator = getAuth();
onAuthStateChanged(authenticator, (user) => {
  if (user) {
    const uid = user.uid;
    console.log(user);
  } else {
    this.$router.push("/");
  }
});

const db = getFirestore(app);
export default db;

这是我的网页添加一个事件,我做了同样的事情,上面和它的工作

添加事件.vue

... 
  else {
    const docRef = await addDoc(collection(db, "eventos"), novoEvento);
    this.$q.notify({
      color: 'teal',
      textColor: 'white',
      icon: 'thumb_up',
      message: 'Event created!',
      position: 'top-right',
    })
    this.$router.push("/");
  }

我没有将Vue上该页面中与路由或路由器相关的任何内容导入到该工作中,那么我该如何在firebase.js文件上进行导入呢?

tp5buhyn

tp5buhyn1#

您没有发布您的main.js,但通常,在Vue应用中,路由器使用Vue.use(router)或类似的方法注入到Vue应用中。因此,$router变量被注入到所有Vue组件中,您可以使用this.$router语法访问该变量。
您的firebase.js文件不是一个Vue组件,因此没有$router被注入其中。您需要通过直接从定义路由器对象的位置导入它来访问它。

相关问题