生產環境和測試環境路徑不同,通過定義global_variable.js全局變量,賦予不同的環境不同路徑,vue定義全局變量

token失效需要跳轉到匯聚平臺登錄頁面,而生產環境和測試環境路徑不同,所以通過定義global_variable.js全局變量,賦予不同的環境不同路徑

global_variable.js

let relogin_baseUrl=''
switch (window.location.hostname) {
    case '172.16.72.108'://線上環境 172.16.72.108
        relogin_baseUrl='http://172.16.75.200:81/#/login'
        break;
    default://測試環境 10.12.31.188
        relogin_baseUrl='http://www.xaadmin.com/#/login'
        break;
}
console.log(relogin_baseUrl)
export default{
    relogin_baseUrl
}

main.js

import global_variable from './global_variable.js'
vue.prototype.global_variable = global_variable

調用

window.location.href=this.global_variable.relogin_baseUrl

當token失效前往正確的登錄頁之後,點擊瀏覽器回退頁面會報錯Cannot read property ‘relogin_baseUrl’ of undefined,解決辦法是在router,error鉤子裏面去判斷是這個message,就是重定向到登錄頁之後回退到上一頁沒找到對應的變量,我們就把此路徑再次重定向到登錄頁(效果就是token失效或者退出登錄前往的是鄙別的系統的登錄頁,而返回上一頁就相當於沒有登陸狀態任然要繼續前往別人的登錄頁面)

router.onError((error) => {
    const pattern = /Loading chunk (\d)+ failed/g;
    const isChunkLoadFailed = error.message.match(pattern);
    console.log(error)
    if (isChunkLoadFailed) {
        console.log(isChunkLoadFailed,'/Loading chunk (\d)+ failed/g','路由懶加載找不到對應的moudle')
        window.location.reload();
    }else{
        if(error.message === "Cannot read property 'relogin_baseUrl' of undefined"){//判斷是否是token失效重新登錄後點擊回退按鈕報錯沒找到對應moudle
            switch (window.location.hostname) {
                case '172.16.72.108'://線上環境 172.16.72.108
                    window.location.href='http://172.16.75.200:81/#/login'
                    break;
                default://測試環境 10.12.31.188
                    window.location.href='http://www.xaadmin.com/#/login'
                    break;
            }  
        }else{
            console.log(error)
        }
    }
});
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章