vue-cli 打包后提交到線上出現(xiàn) "Uncaught SyntaxError:Unexpected token" 報錯
前言: 項目使用vue-cli版本2.9.3 ,vue-router使用webpackChunkName實現(xiàn)按需加載.

BUG描述:該報錯在項目上線一段時間后,有用戶反映頁面無法正常游覽 (后面以問題1/問題2區(qū)分)
問題1.導航點擊無法正常跳轉,console打印:Error:Loading chunk {n} failed.
報錯截圖
問題2.頁面全白,console打印:Uncaught SyntaxError:Unexpected token <
報錯截圖:
經(jīng)過一番折騰,初步定位問題1在經(jīng)過build/webpack.prod.conf.js的chunkhash打包后的JS文件hash值會有變更,因為每次更新代碼到線上都會刪除舊的dist目錄,將最新的dist目錄copy上傳提供后臺更新. 在更新代碼的這個過程用戶停留在頁面上,當用戶在更新完后重新操作就會導致報錯

問題1解決方法:捕獲路由報錯. (思路來源:http://www.dhdzp.com/article/147427.htm)
routers.onError((err) => {
const pattern = /Loading chunk (\d)+ failed/g;
const isChunkLoadFailed = err.message.match(pattern);
if (isChunkLoadFailed) {
let chunkBool = sessionStorage.getItem('chunkError');
let nowTimes = Date.now();
if (chunkBool === null || chunkBool && nowTimes - parseInt(chunkBool) > 60000) {//路由跳轉報錯,href手動跳轉
sessionStorage.setItem('chunkError', 'reload');
const targetPath = routers.history.pending.fullPath;
window.location.href = window.location.origin + targetPath;
}else if(chunkBool === 'reload'){ //手動跳轉后依然報錯,強制刷新
sessionStorage.setItem('chunkError', Date.now());
window.location.reload(true);
}
}
})
問題2在Network查看js文件加載的時候發(fā)現(xiàn)某個js文件Response Headercontent-type異常,正常情況返回content-type: application/javascript. 但是有一個js響應的內(nèi)容為HTML, js無法識別<符號導致拋出報錯


問題2目前還在與后臺商量如何解決,解決后會更新解決方法分享.有同學遇到同樣的問題可以一起討論或提出更好的解決方案參考學習.★★★
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- 解決vite項目Uncaught Syntaxerror:Unexpected token>vue項目上線白屏問題
- VUE3刷新頁面報錯問題解決:Uncaught?SyntaxError:Unexpected?token?'<'
- Vue項目報錯:Uncaught?SyntaxError:?Unexpected?token?'<'的解決方法
- 解決VUE項目在IIS部署出現(xiàn):Uncaught SyntaxError: Unexpected token < 報錯
- Vue項目報錯:Uncaught SyntaxError: Unexpected token <
- vue出現(xiàn)Uncaught SyntaxError:Unexpected token問題及解決
相關文章
vue 數(shù)組和對象不能直接賦值情況和解決方法(推薦)
這篇文章主要介紹了vue 數(shù)組和對象不能直接賦值情況和解決方法,需要的朋友可以參考下2017-10-10
Vue2.0 v-for filter列表過濾功能的實現(xiàn)
今天小編就為大家分享一篇Vue2.0 v-for filter列表過濾功能的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09
vue項目中實現(xiàn)el-dialog組件可拖拽效果
本文主要介紹了vue項目中實現(xiàn)el-dialog組件可拖拽效果,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01
Vue-router優(yōu)化import引入過多導致index文件臃腫問題
這篇文章主要為大家介紹了Vue-router優(yōu)化import引入過多導致index文件臃腫問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08
詳解Vue改變數(shù)組中對象的屬性不重新渲染View的解決方案
這篇文章主要介紹了詳解Vue改變數(shù)組中對象的屬性不重新渲染View的解決方案,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-09-09
vue配置electron使用electron-builder進行打包的操作方法
這篇文章主要介紹了vue配置electron使用electron-builder進行打包的操作方法,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧2024-08-08



