做爰高潮a片〈毛片〉,尤物av天堂一区二区在线观看,一本久久A久久精品VR综合,添女人荫蒂全部过程av

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

詳解Vue項目中出現(xiàn)Loading chunk {n} failed問題的解決方法

來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 22:07:44
文檔

詳解Vue項目中出現(xiàn)Loading chunk {n} failed問題的解決方法

詳解Vue項目中出現(xiàn)Loading chunk {n} failed問題的解決方法:最近有個Vue項目中會偶爾出現(xiàn)Loading chunk {n} failed的報錯,報錯來自于webpack進(jìn)行code spilt之后某些bundle文件lazy loading失敗。但是這個問題的根本原因沒有被找到,因為這個問題出現(xiàn)的偶然性太高了,而且有的手機(jī)上會出現(xiàn),有的不會,用模擬器不會出現(xiàn)
推薦度:
導(dǎo)讀詳解Vue項目中出現(xiàn)Loading chunk {n} failed問題的解決方法:最近有個Vue項目中會偶爾出現(xiàn)Loading chunk {n} failed的報錯,報錯來自于webpack進(jìn)行code spilt之后某些bundle文件lazy loading失敗。但是這個問題的根本原因沒有被找到,因為這個問題出現(xiàn)的偶然性太高了,而且有的手機(jī)上會出現(xiàn),有的不會,用模擬器不會出現(xiàn)

最近有個Vue項目中會偶爾出現(xiàn)Loading chunk {n} failed的報錯,報錯來自于webpack進(jìn)行code spilt之后某些bundle文件lazy loading失敗。但是這個問題的根本原因沒有被找到,因為這個問題出現(xiàn)的偶然性太高了,而且有的手機(jī)上會出現(xiàn),有的不會,用模擬器不會出現(xiàn),用真機(jī)又會出現(xiàn),不知道是網(wǎng)絡(luò)原因還是webpack的bug。在github、stackoverflow等各種地方也找不到原因和解決方案,這是github上關(guān)于這個問題的討論:Loading chunk {n} failed #742,雖然最后還是不了了之,但是大家可以參考一下。

這個問題出現(xiàn)概率比較小但是一旦出現(xiàn)就會導(dǎo)致頁面崩潰,所以還是得解決,下面就貼出我的解決方案:

我的思路是既然找不到報錯的原因那么嘗試去捕獲這個錯誤并做容錯處理,有兩種實現(xiàn),一是在服務(wù)端捕獲這個錯誤,一個是在前端捕獲。

服務(wù)端實現(xiàn)

報錯的原因是某些js bundle沒有被找到,所以在服務(wù)端接收到獲取該js文件的請求時先判斷該js文件是否存在,如果存在直接返回js文件,如果不存在則返回一個提示信息給前端,讓前端處理。假設(shè)服務(wù)端用express作為靜態(tài)文件服務(wù)器,代碼如下:

app.all(/\.js$/, (req, res) => {
 const fileName = req.path.slice(req.path.lastIndexOf('/') + 1);
 const filePath = path.resolve(__dirname, './public/static/js/' + fileName);
 if (fs.existsSync(filePath)) {
 fs.sendFile(filePath);
 } else {
 res.setHeader('Content-Type', 'application/javascript; charset=UTF-8')
 res.setHeader('Accept-Ranges', 'bytes')
 res.setHeader('Vary', 'Accept-Encoding')
 res.setHeader('Transfer-Encoding', 'chunked')
 res.setHeader('Last-Modified', new Date().toUTCString())
 res.setHeader('Cache-Control', 'no-cache')
 res.send('window.serverRebuildHook && window.serverRebuildHook();')
 }
});

當(dāng)js文件未找到時,通過res.send('window.serverRebuildHook && window.serverRebuildHook();')向前端返回一條消息,并執(zhí)行前端定義的serverRebuildHook方法。

接著我們在前端實現(xiàn)serverRebuildHook方法:

window.serverRebuildHook = function () {
 alert('服務(wù)器版本已更新,正在刷新本地緩存,請稍后...');
 location.replace(location.href);
}

方法很簡單,提示一下用戶服務(wù)端更新然后重新刷新當(dāng)前頁面。

這種實現(xiàn)是參考github上的回答, 相對比較繁瑣,而且用戶體驗并不好,只能刷新當(dāng)前頁面,不能跳轉(zhuǎn)到目標(biāo)頁。

前端實現(xiàn)

由于項目里面用到了vue-router,vue-router的錯誤處理函數(shù) onError 是不是能夠捕獲該錯誤呢?我們來看一下官方文檔的說明:

當(dāng)在渲染一個路由的過程中,需要嘗試解析一個異步組件時發(fā)生錯誤。 完全符合我們場景,所以在onError方法中我們實現(xiàn)如下代碼:

router.onError((error) => {
 const pattern = /Loading chunk (\d)+ failed/g;
 const isChunkLoadFailed = error.message.match(pattern);
 const targetPath = router.history.pending.fullPath;
 if (isChunkLoadFailed) {
 router.replace(targetPath);
 }
});

當(dāng)捕獲到Loading chunk {n} failed的錯誤時我們重新渲染目標(biāo)頁面,這種實現(xiàn)明顯更簡單和友好。

后續(xù)如果發(fā)現(xiàn)了導(dǎo)致Loading chunk {n} failed的本質(zhì)原因會再更新本文,歡迎關(guān)注!

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

詳解Vue項目中出現(xiàn)Loading chunk {n} failed問題的解決方法

詳解Vue項目中出現(xiàn)Loading chunk {n} failed問題的解決方法:最近有個Vue項目中會偶爾出現(xiàn)Loading chunk {n} failed的報錯,報錯來自于webpack進(jìn)行code spilt之后某些bundle文件lazy loading失敗。但是這個問題的根本原因沒有被找到,因為這個問題出現(xiàn)的偶然性太高了,而且有的手機(jī)上會出現(xiàn),有的不會,用模擬器不會出現(xiàn)
推薦度:
標(biāo)簽: failed loading 問題的
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 肥乡县| 平阳县| 普洱| 中西区| 隆子县| 徐闻县| 通城县| 遵义市| 旬邑县| 荃湾区| 东辽县| 东至县| 青浦区| 建湖县| 通化县| 竹北市| 大埔区| 晴隆县| 雷波县| 余庆县| 永州市| 镇平县| 肥东县| 杨浦区| 阳原县| 合作市| 华蓥市| 安乡县| 舞阳县| 太仆寺旗| 丹东市| 浑源县| 昭苏县| 甘肃省| 许昌市| 江都市| 红河县| 兰考县| 德昌县| 交城县| 威信县|