部署Vue項(xiàng)目到服務(wù)器后404錯(cuò)誤的原因及解決方案
一、Vue項(xiàng)目部署步驟
在前后端分離的開(kāi)發(fā)模式下,前端項(xiàng)目獨(dú)立部署通常涉及以下步驟:
- 構(gòu)建項(xiàng)目:Vue項(xiàng)目構(gòu)建后生成一系列靜態(tài)文件。
- 上傳文件:使用scp命令將構(gòu)建好的文件上傳至服務(wù)器的web容器指定靜態(tài)目錄。
scp dist.zip user@host:/xx/xx/xx
- 配置Web服務(wù)器:以Nginx為例,配置服務(wù)器以指向靜態(tài)文件目錄。
server {
listen 80;
server_name www.xxx.com;
location / {
index /data/dist/index.html;
}
}
- 重啟Nginx:檢查配置并重啟Nginx以應(yīng)用更改。
nginx -t nginx -s reload
- 訪(fǎng)問(wèn)域名:在瀏覽器輸入域名以訪(fǎng)問(wèn)部署的應(yīng)用。
以上是最直接的一種部署方式。更高級(jí)的部署方式,如自動(dòng)化、鏡像、容器和流水線(xiàn)部署,本質(zhì)上是將此邏輯抽象和程序化,本文不展開(kāi)討論。
二、404錯(cuò)誤原因及解決方案
錯(cuò)誤場(chǎng)景
- 問(wèn)題描述:Vue項(xiàng)目在本地運(yùn)行正常,但部署到服務(wù)器后刷新頁(yè)面出現(xiàn)404錯(cuò)誤。
- 錯(cuò)誤定位:HTTP 404錯(cuò)誤表示請(qǐng)求的資源不存在。
原因分析
- History模式問(wèn)題:在Vue單頁(yè)應(yīng)用(SPA)中,所有用戶(hù)交互通過(guò)動(dòng)態(tài)重寫(xiě)當(dāng)前頁(yè)面實(shí)現(xiàn)。構(gòu)建物只產(chǎn)出
index.html,而nginx配置可能未涵蓋所有路由。 - Hash模式無(wú)問(wèn)題:Hash模式不會(huì)將hash值包含在HTTP請(qǐng)求中,因此不會(huì)因hash變化重新加載頁(yè)面,避免了404錯(cuò)誤。
解決方案
- 修改Nginx配置:配置所有頁(yè)面請(qǐng)求都重定向到
index.html,交由前端路由處理。
server {
listen 80;
server_name www.xxx.com;
location / {
index /data/dist/index.html;
try_files $uri $uri/ /index.html;
}
}
修改后重啟Nginx。
nginx -s reload
- 覆蓋所有路由:在Vue應(yīng)用中覆蓋所有路由情況,并提供404頁(yè)面。
const router = new VueRouter({
mode: 'history',
routes: [
{ path: '*', component: NotFoundComponent }
]
})
其他后端配置方案(如Apache、Node.js)的核心思想類(lèi)似,本文不再詳述。
到此這篇關(guān)于部署Vue項(xiàng)目到服務(wù)器后404錯(cuò)誤的原因及解決方案的文章就介紹到這了,更多相關(guān)部署Vue到服務(wù)器后404內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue實(shí)現(xiàn)動(dòng)態(tài)表單動(dòng)態(tài)渲染組件的方式(1)
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)動(dòng)態(tài)表單動(dòng)態(tài)渲染組件的方式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
Vue.use與Vue.prototype的區(qū)別及說(shuō)明
這篇文章主要介紹了Vue.use與Vue.prototype的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
vue中使用heatmapjs的示例代碼(結(jié)合百度地圖)
這篇文章主要介紹了vue中使用heatmapjs的示例代碼(結(jié)合百度地圖),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09
Vue使用高德地圖搭建實(shí)時(shí)公交應(yīng)用功能(地圖 + 附近站點(diǎn)+線(xiàn)路詳情 + 輸入提示+換乘詳情)
這篇文章主要介紹了vue中使用高德地圖搭建實(shí)時(shí)公交應(yīng)用(地圖 + 附近站點(diǎn)+線(xiàn)路詳情 + 輸入提示+換乘詳情),主要是讓大家熟悉下高德地圖在vue中的使用及vue的常用指令,需要的朋友可以參考下2018-05-05
vue打包后出現(xiàn)空白頁(yè)的原因及解決方式詳解
在項(xiàng)目中很多時(shí)候需要用到vue打包成html不需要放在服務(wù)器上就能瀏覽,根據(jù)官網(wǎng)打包出來(lái)的html直接打開(kāi)是顯示空白,下面這篇文章主要給大家介紹了關(guān)于vue打包后出現(xiàn)空白頁(yè)的原因及解決方式的相關(guān)資料,需要的朋友可以參考下2022-07-07
用Vue.js方法創(chuàng)建模板并使用多個(gè)模板合成
在本篇文章中小編給大家分享了關(guān)于如何使用Vue.js方法創(chuàng)建模板并使用多個(gè)模板合成的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們學(xué)習(xí)下。2019-06-06
element組件中自定義組件的樣式不生效問(wèn)題(vue scoped scss無(wú)效)
這篇文章主要介紹了解決element組件中自定義組件的樣式不生效問(wèn)題(vue scoped scss無(wú)效),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
vue簡(jiǎn)單的二維數(shù)組循環(huán)嵌套方式
這篇文章主要介紹了vue簡(jiǎn)單的二維數(shù)組循環(huán)嵌套方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04

