實(shí)現(xiàn)效果:根據(jù)官網(wǎng)建立layouts/error.vue文件泥耀,目的神郊,在用戶輸入路由錯(cuò)誤(即非router配置的路由)時(shí)迅办,響應(yīng)一個(gè)錯(cuò)誤的提示頁(yè)面而不是使用瀏覽器報(bào)錯(cuò)的形式宅静,如:輸入 /a(a頁(yè)面不存在) 能跳轉(zhuǎn)到error頁(yè)面? !
問(wèn)題:官網(wǎng)只提到了創(chuàng)建error及內(nèi)容編寫站欺,當(dāng)你在開發(fā)環(huán)境(npm run dev)運(yùn)行時(shí)輸入錯(cuò)誤頁(yè)面能定到error頁(yè)面姨夹,沒(méi)有問(wèn)題。但是矾策,注意了磷账,當(dāng)使用npm run generate靜態(tài)打包后,在進(jìn)行相同操作贾虽,你會(huì)發(fā)現(xiàn)error并沒(méi)有定到(即是瀏覽器報(bào)錯(cuò))逃糟,在生成的包文件夾下你會(huì)發(fā)現(xiàn)沒(méi)有404的頁(yè)面(正確的配置error打包后會(huì)生成404.html);然后就是我瘋狂的查官網(wǎng)和別的大神資料榄鉴,然后都是用的官網(wǎng)文檔一筆帶過(guò)(也不曉得他們測(cè)沒(méi)得履磨,還是說(shuō)都是用的服務(wù)端部署)蛉抓,注:前面提到服務(wù)端部署庆尘,這里我就提一下原因,npm run dev和服務(wù)端部署其實(shí)是同樣的環(huán)境(就是npm run dev也是服務(wù)端部署)巷送,所以你會(huì)發(fā)現(xiàn)這兩個(gè)都能正常定向到error頁(yè)面驶忌,但是靜態(tài)部署是靜態(tài)托管,是另一種模式笑跛。所以你打包后會(huì)發(fā)現(xiàn)開發(fā)環(huán)境定向錯(cuò)誤頁(yè)面付魔,但是打包后就定不到而是瀏覽器報(bào)錯(cuò)了;
花了幾天時(shí)間查官網(wǎng)查大神飞蹂,都是一筆帶過(guò)几苍,個(gè)人的犟脾氣就上來(lái)了,于是就去官網(wǎng)的git上把他們官網(wǎng)的demo下下來(lái)查陈哑,多次測(cè)試后發(fā)現(xiàn)是nuxt.config.js中的generate需要進(jìn)行配置才能使靜態(tài)部署的error打包成功妻坝,官方文檔并沒(méi)有解釋參數(shù)對(duì)這個(gè)起作用(這也是讓我懵逼的巨大bug很討厭)伸眶,generate: {
? ? fallback: true, // 在將生成的站點(diǎn)部署到靜態(tài)主機(jī)時(shí),可以使用此文件刽宪。它將回退到模式:mode:'spa'厘贼。 主要是這個(gè)api的作用 打包生產(chǎn)404
? ? interval: 150 //兩個(gè)渲染周期之間的間隔,以避免使用來(lái)自Web應(yīng)用程序的API調(diào)用互相干擾圣拄。 建議加這個(gè)是因?yàn)閑rror里面官網(wǎng)會(huì)叫你引入props:["error"]嘴秸,這個(gè)時(shí)間間隔便是避免跳轉(zhuǎn)后傳值造成api沖突 我測(cè)試150是所有頁(yè)面通過(guò)(之前設(shè)置100基本通過(guò)但是有一個(gè)頁(yè)面始終報(bào)錯(cuò)白屏,也是糾結(jié)了好久庇谆,個(gè)人有個(gè)寫代碼的壞習(xí)慣:明明同樣的代碼頁(yè)面引入方式一模一樣岳掐,就是別的都能過(guò)唯獨(dú)一個(gè)不過(guò),就不會(huì)想配置代碼問(wèn)題(框架原理)族铆,總是會(huì)在這樣的情況卡很久岩四,難受)
? }
設(shè)置這generate兩個(gè)參數(shù)后,再打包進(jìn)文件夾會(huì)發(fā)現(xiàn)多了個(gè)404頁(yè)面哥攘,啟動(dòng)服務(wù)器(dist下http-server)運(yùn)行就能進(jìn)入404錯(cuò)誤頁(yè)面了剖煌,剩下bug如白屏就是上述問(wèn)題及代碼問(wèn)題了;
以上逝淹,特此記錄耕姊,防止以后忘記又掉坑里,