国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue-element-admin vue設(shè)置動(dòng)態(tài)路由 刷新頁(yè)面后出現(xiàn)跳轉(zhuǎn)404頁(yè)面Bug 解決方法

這篇具有很好參考價(jià)值的文章主要介紹了vue-element-admin vue設(shè)置動(dòng)態(tài)路由 刷新頁(yè)面后出現(xiàn)跳轉(zhuǎn)404頁(yè)面Bug 解決方法。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

element ui admin 動(dòng)態(tài)路由刷新后跳轉(zhuǎn)到404,疑難雜癥,Vue,前端,vue.js,bug,javascript

做項(xiàng)目時(shí)遇到的這個(gè)bug,因?yàn)槌颂?04之外也沒(méi)太大影響,之前就一直放著沒(méi)管,現(xiàn)在項(xiàng)目基本功能實(shí)現(xiàn)了,轉(zhuǎn)頭處理了一下,現(xiàn)在在這里記錄一下解決方法

這個(gè)bug的具體情況是:設(shè)置了動(dòng)態(tài)路由之后,不同的用戶登錄之后顯示了不同的側(cè)邊欄,在側(cè)邊欄點(diǎn)擊菜單,渲染對(duì)應(yīng)路由頁(yè)面沒(méi)有任何問(wèn)題,但是在動(dòng)態(tài)路由上當(dāng)我刷新瀏覽器時(shí)會(huì)出現(xiàn)404(這種情況只出現(xiàn)在動(dòng)態(tài)路由上,靜態(tài)路由刷新沒(méi)問(wèn)題)。

動(dòng)態(tài)路由設(shè)置不成功的可以看我之前的文章:vue-element-template 設(shè)置權(quán)限管理配置文件 \ vue用戶權(quán)限管理_vue template設(shè)置-CSDN博客

解決方法一

? ? ? ? 由于通配路由需要放在整個(gè)路由的最后,所以不能放在asyncRouterMap的最后,但是也不能直接放在constantRoutes的最后,因?yàn)樵?strong>動(dòng)態(tài)路由在刷新時(shí)會(huì)跳轉(zhuǎn)到404,因?yàn)樗⑿率莿?dòng)態(tài)路由還沒(méi)加載進(jìn)來(lái),但是頁(yè)面已經(jīng)進(jìn)行了跳轉(zhuǎn),找不到匹配的路由,最后會(huì)去到通配路由。

解決方法:

把下面這個(gè)路由從constantRoutes的最后一行轉(zhuǎn)移到asyncRoutes的最后一行即可!

// 404 page must be placed at the end !!!
{ path: '*', redirect: '/404', hidden: true }

解決方法二:

????????在使用的過(guò)程中,加入權(quán)限模塊后,刷新后權(quán)限控制的頁(yè)面就默認(rèn)跳轉(zhuǎn)到404頁(yè)面了,原因是權(quán)限控制的路由模塊是動(dòng)態(tài)添加進(jìn)去的,而我的404監(jiān)聽(tīng)路由是在默認(rèn)路由里面的,優(yōu)先級(jí)比動(dòng)態(tài)路由要高,所以刷新后默認(rèn)先被404接管了,改一下,把404監(jiān)聽(tīng)路由注釋掉需要手動(dòng)在動(dòng)態(tài)路由加載后,再把通配路由加上去,所以有了解決方法二
解決方法二:
src/router/index.js,去靜態(tài)路由里把404路由注釋掉

// 靜態(tài)路由,所有人可見(jiàn)
export const constantRoutes = [
  {
    path: '/login',
    component: () => import('@/views/login/index'),
    // hidden為true表示在側(cè)邊欄不顯示
    hidden: true
  },

  {
    path: '/',
    component: Layout,
    redirect: '/dashboard',
    // 二級(jí)路由
    children: [{
      path: 'dashboard',
      name: 'Dashboard',
      component: () => import('@/views/dashboard/index'),
      meta: { title: '首頁(yè)', icon: 'dashboard' }
    }]
  },

  {
    path: '/404',
    component: () => import('@/views/404'),
    hidden: true
  },

  // 把這里注釋掉,或者刪掉
  // { path: '*', redirect: '/404', hidden: true }
]

然后修改文件:?/src/permission.js,具體位置是下面這段代碼中注釋后面兩行

const res = await store.dispatch('user/getInfo')
let roles = res.info.auth_list
const accessRoutes = await store.dispatch('permission/GenerateRoutes', roles)
let old = JSON.parse(JSON.stringify(router.options))
router.addRoutes(accessRoutes)

// 在這動(dòng)態(tài)添加最后的通配路由,確保先有動(dòng)態(tài)路由、再有通配路由,解決動(dòng)態(tài)路由刷新會(huì)跳轉(zhuǎn)到404問(wèn)題
let lastRou = [{ path: '*', redirect: '/404' }]
router.addRoutes(lastRou)

let newr = JSON.parse(JSON.stringify(router.options))
next({ ...to, replace: true })

/src/permission.js完整代碼【可能每個(gè)人的不同,建議對(duì)照修改而不是復(fù)制】文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-861296.html

// 引入路由器router
import router from './router'
// 引入倉(cāng)庫(kù)
import store from './store'
// 引入ele的提示組件
import { Message } from 'element-ui'
// 引入交互進(jìn)度條
import NProgress from 'nprogress' // progress bar
import 'nprogress/nprogress.css' // progress bar style
// 從cookie中獲取token,登錄了就有cookie
import { getToken } from '@/utils/auth' // get token from cookie
// 得到頁(yè)面的title
import getPageTitle from '@/utils/get-page-title'

// 配置nprogress
NProgress.configure({ showSpinner: false }) // NProgress Configuration

// 白名單,不需要登錄就能進(jìn)入的路由
const whiteList = ['/login'] // no redirect whitelist

// 全局前置路由守衛(wèi)
router.beforeEach(async(to, from, next) => {
  //開(kāi)啟進(jìn)度條
  NProgress.start()

  //給頁(yè)面的title賦值
  document.title = getPageTitle(to.meta.title)

  // 從cookie中拿到token,有的話就放行,determine whether the user has logged in
  const hasToken = getToken()

  if (hasToken) {
    if (to.path === '/login') {
      // if is logged in, redirect to the home page
      next({ path: '/' })
      NProgress.done()
    } else {
      // 獲取用戶信息
      // const hasGetUserInfo = store.getters.name
      const hasRoles = store.getters.roles && store.getters.roles.length > 0// 權(quán)限控制
      console.log('roles:',store.getters.roles)
      // if (hasGetUserInfo) {
      if (hasRoles) {
        console.log('執(zhí)行了1')
        next()
      } else {
        console.log('執(zhí)行了2')
        try {
          // get user info 重新獲取用戶信息
          // await store.dispatch('user/getInfo')
          // 權(quán)限控制
          console.log('tore.getters.roles:',store.getters.roles)
          const { roles } = await store.dispatch('user/getInfo')
          // 在角色權(quán)限基礎(chǔ)上生成動(dòng)態(tài)路由表
          const accessRoutes = await store.dispatch('permission/generateRoutes', roles)
          console.log('accessRoutes:',accessRoutes)
          router.options.routes = store.getters.permission_routes 
          // 動(dòng)態(tài)添加可訪問(wèn)路由
          router.addRoutes(accessRoutes)
          // 在這動(dòng)態(tài)添加最后的通配路由,確保先有動(dòng)態(tài)路由、再有通配路由,解決動(dòng)態(tài)路由刷新會(huì)跳轉(zhuǎn)到404問(wèn)題
          let lastRou = [{ path: '*', redirect: '/404' }]
          router.addRoutes(lastRou)
          console.log('輸出的store:',store)
          next({...to, replace: true })
          
          // next()

        } catch (error) {
          // remove token and go to login page to re-login
          await store.dispatch('user/resetToken')
          Message.error(error || 'Has Error')
          next(`/login?redirect=${to.path}`)
          NProgress.done()
        }
      }
    }
  } else {
    /* has no token*/

    if (whiteList.indexOf(to.path) !== -1) {
      // in the free login whitelist, go directly
      next()
    } else {
      // other pages that do not have permission to access are redirected to the login page.
      next(`/login?redirect=${to.path}`)
      // 關(guān)閉進(jìn)度條
      NProgress.done()
    }
  }
})

// 全局后置路由守衛(wèi)
router.afterEach(() => {
  // finish progress bar
  NProgress.done()
})

到了這里,關(guān)于vue-element-admin vue設(shè)置動(dòng)態(tài)路由 刷新頁(yè)面后出現(xiàn)跳轉(zhuǎn)404頁(yè)面Bug 解決方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Vue-Element-Admin】table添加自定義索引

    通過(guò)給 type=index 的列傳入 index 屬性,可以自定義索引。該屬性傳入數(shù)字時(shí),將作為索引的起始值。也可以傳入一個(gè)方法,它提供當(dāng)前行的行號(hào)(從 0 開(kāi)始)作為參數(shù),返回值將作為索引展示。

    2024年02月05日
    瀏覽(31)
  • 虛擬機(jī)Ubuntu下運(yùn)行vue-element-admin項(xiàng)目

    虛擬機(jī)Ubuntu下運(yùn)行vue-element-admin項(xiàng)目

    首先附上vue-element-admin項(xiàng)目的相關(guān)介紹鏈接 介紹 | vue-element-admin (gitee.io) 一.環(huán)境搭建 1.安裝nodejs 安裝完成后,查看對(duì)應(yīng)的版本號(hào) 沒(méi)有問(wèn)題,會(huì)輸出對(duì)應(yīng)版本號(hào),我這里是10.19.0 2.安裝npm 安裝完成查看對(duì)應(yīng)的版本號(hào),確認(rèn)OK 我這里是版本是6.14.4 3.安裝Vue 同樣查看一下版本號(hào)確

    2024年02月07日
    瀏覽(21)
  • 安裝運(yùn)行vue-element-admin的報(bào)錯(cuò)問(wèn)題-解決辦法

    安裝運(yùn)行vue-element-admin的報(bào)錯(cuò)問(wèn)題-解決辦法

    官網(wǎng)安裝鏈接如下: https://panjiachen.gitee.io/vue-element-admin-site/zh/guide/#%E5%AE%89%E8%A3%85 我遇到的報(bào)錯(cuò)主要在以下階段: 按上方安裝鏈接里git clone后npm install無(wú)法安裝 npm install完成后無(wú)法啟動(dòng),即npm run dev失敗 后經(jīng)查找網(wǎng)上各種資料,于 2022.11.20 完成安裝并成功運(yùn)行。 下面將分這兩

    2023年04月23日
    瀏覽(104)
  • 6. vue-element-admin 二次開(kāi)發(fā)避坑指南

    6. vue-element-admin 二次開(kāi)發(fā)避坑指南

    上一篇博文,我們分享了vue-element-admin二次開(kāi)發(fā)的改造優(yōu)化技巧,這篇博文匯總 vue-element-admin 二次開(kāi)發(fā)可能遇到的坑。 1.1.1 切換標(biāo)簽時(shí)未保存頁(yè)面的操作內(nèi)容 有時(shí)候會(huì)發(fā)現(xiàn)一個(gè)神奇的現(xiàn)象,當(dāng)打開(kāi)多個(gè)tab標(biāo)簽,然后當(dāng)修改某個(gè)標(biāo)簽頁(yè)面內(nèi)容,再次切換標(biāo)簽頁(yè)面的時(shí)候,會(huì)發(fā)

    2024年02月10日
    瀏覽(23)
  • Vue-Element-Admin項(xiàng)目學(xué)習(xí)筆記(6)Vuex狀態(tài)管理

    Vue-Element-Admin項(xiàng)目學(xué)習(xí)筆記(6)Vuex狀態(tài)管理

    前情回顧: vue-element-admin項(xiàng)目學(xué)習(xí)筆記(1)安裝、配置、啟動(dòng)項(xiàng)目 vue-element-admin項(xiàng)目學(xué)習(xí)筆記(2)main.js 文件分析 vue-element-admin項(xiàng)目學(xué)習(xí)筆記(3)路由分析一:靜態(tài)路由 vue-element-admin項(xiàng)目學(xué)習(xí)筆記(4)路由分析二:動(dòng)態(tài)路由及permission.js vue-element-admin項(xiàng)目學(xué)習(xí)筆記(5)路由分析

    2024年02月09日
    瀏覽(30)
  • Vue-element-admin項(xiàng)目中完全移除ES lint

    由于不需要用到eslint,因此需要完全移除此插件,過(guò)程如下: 在項(xiàng)目根目錄下,執(zhí)行以下命令,卸載與 ESLint 相關(guān)的依賴包: npm uninstall @vue/cli-plugin-eslint lint-staged husky eslint babel-eslint eslint-config-standard eslint-friendly-formatter eslint-loader eslint-plugin-html eslint-plugin-promise eslint-plugin-s

    2024年02月07日
    瀏覽(31)
  • 課程13:vue-element-admin安裝與移除實(shí)例代碼

    本文是《.Net Core從零學(xué)習(xí)搭建權(quán)限管理系統(tǒng)》教程專欄的課程(點(diǎn)擊

    2024年02月08日
    瀏覽(19)
  • 【Vue-Element-Admin】導(dǎo)出el-table全部數(shù)據(jù)

    因?yàn)閑l-table實(shí)現(xiàn)了分頁(yè)查詢,所以想要實(shí)現(xiàn)el-table需要重新編寫(xiě)一個(gè)查詢?nèi)繑?shù)據(jù)的方法 listQuery:

    2024年02月09日
    瀏覽(24)
  • Vue-Element-Admin項(xiàng)目學(xué)習(xí)筆記(9)表單組件封裝,父子組件雙向通信

    Vue-Element-Admin項(xiàng)目學(xué)習(xí)筆記(9)表單組件封裝,父子組件雙向通信

    前情回顧: vue-element-admin項(xiàng)目學(xué)習(xí)筆記(1)安裝、配置、啟動(dòng)項(xiàng)目 vue-element-admin項(xiàng)目學(xué)習(xí)筆記(2)main.js 文件分析 vue-element-admin項(xiàng)目學(xué)習(xí)筆記(3)路由分析一:靜態(tài)路由 vue-element-admin項(xiàng)目學(xué)習(xí)筆記(4)路由分析二:動(dòng)態(tài)路由及permission.js vue-element-admin項(xiàng)目學(xué)習(xí)筆記(5)路由分析

    2024年02月11日
    瀏覽(30)
  • vue-element-admin項(xiàng)目-Host key verification failed.-已解決

    vue-element-admin項(xiàng)目-Host key verification failed.-已解決

    在網(wǎng)上下載的element-admin項(xiàng)目,install的時(shí)候一直報(bào)錯(cuò)Host key verification failed, 實(shí)測(cè)好用?。?!已解決 報(bào)錯(cuò)問(wèn)題: 上面寫(xiě)到主機(jī)密鑰驗(yàn)證失敗,無(wú)法從遠(yuǎn)程倉(cāng)庫(kù)拉取。說(shuō)明我們需要生成一個(gè)新的密鑰,然后添加到遠(yuǎn)程倉(cāng)庫(kù) ? ? 打開(kāi) Git Bash 終端,將下面的文本復(fù)制進(jìn)去執(zhí)行(使

    2024年02月08日
    瀏覽(103)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包