Vue.js 每个未被调用之前的Vue路由器

Vue.js 每个未被调用之前的Vue路由器,vue.js,vue-router,Vue.js,Vue Router,我现在很难在路由器代码中找到一个bug,它以前工作过,我不知道是什么时候或者如何破坏它的。我已经检查了旧版本,但它似乎没有改变。问题是,即使我从路由器中的beforeach钩子中删除所有代码,并且只使用console.log()语句,控制台中也不会打印任何内容,因此我的auth-guard无法工作。我试着根据这个改变顺序:但什么也没变 我有以下代码: 路由器/index.js router.beforeEach = (to, from, next) => { console.log('

我现在很难在路由器代码中找到一个bug,它以前工作过,我不知道是什么时候或者如何破坏它的。我已经检查了旧版本,但它似乎没有改变。问题是,即使我从路由器中的beforeach钩子中删除所有代码,并且只使用console.log()语句,控制台中也不会打印任何内容,因此我的auth-guard无法工作。我试着根据这个改变顺序:但什么也没变

我有以下代码:

路由器/index.js

router.beforeEach = (to, from, next) => {
  console.log('he?')
  const currentUser = Firebase.auth().currentUser
  const isGold = store.getters['user/isGold']
  const requiresAuth = to.matched.some(route => route.meta.requiresAuth)
  const requiresGold = to.matched.some(route => route.meta.requiresGold)

  console.log(requiresGold, isGold, 'halloooooooo?')

  if (currentUser && to.name === 'Login') {
    next('/dashboard')
  }

  if (requiresGold && !isGold) {
    console.log('trigger')
  }

  if (requiresAuth && !currentUser) {
    next('/login')
  } else {
    next(false)
  }
}
main.js

Firebase.auth().onAuthStateChanged(user => {
  if (user) {
    const getToken = () => {
      return user.getIdToken(true).then(token => {
        store.dispatch('user/setToken', token)
      })
    }
    getToken().then(() => {
      store.dispatch('user/setUser')
      setInterval(getToken, 3540 * 1000)
    })
  }
  new Vue({
    el: '#app',
    store,
    router,
    template: '<App/>',
    components: { App }
  })
Firebase.auth().onAuthStateChanged(用户=>{
如果(用户){
常量getToken=()=>{
返回user.getIdToken(true)。然后(token=>{
store.dispatch('user/setToken',token)
})
}
getToken()。然后(()=>{
store.dispatch('user/setUser')
设置间隔(getToken,3540*1000)
})
}
新Vue({
el:“#应用程序”,
商店,
路由器,
模板:“”,
组件:{App}
})
})


提前感谢您的帮助

您不分配给
路由器。在每个
之前<代码>路由器。beforeach
是一个方法,您可以使用函数调用它。()这是您应该如何使用路由器导航保护:

router.beforeEach((to, from, next) => {
  console.log('he?')
  const currentUser = Firebase.auth().currentUser
  const isGold = store.getters['user/isGold']
  const requiresAuth = to.matched.some(route => route.meta.requiresAuth)
  const requiresGold = to.matched.some(route => route.meta.requiresGold)

  console.log(requiresGold, isGold, 'halloooooooo?')

  if (currentUser && to.name === 'Login') {
    next('/dashboard')
  }

  if (requiresGold && !isGold) {
    console.log('trigger')
  }

  if (requiresAuth && !currentUser) {
    next('/login')
  } else {
    next(false)
  }
});