部署Vue項(xiàng)目到服務(wù)器后404錯(cuò)誤的原因及解決方案
一、Vue項(xiàng)目部署步驟
在前后端分離的開發(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
- 訪問域名:在瀏覽器輸入域名以訪問部署的應(yīng)用。
以上是最直接的一種部署方式。更高級(jí)的部署方式,如自動(dòng)化、鏡像、容器和流水線部署,本質(zhì)上是將此邏輯抽象和程序化,本文不展開討論。
二、404錯(cuò)誤原因及解決方案
錯(cuò)誤場(chǎng)景
- 問題描述:Vue項(xiàng)目在本地運(yùn)行正常,但部署到服務(wù)器后刷新頁面出現(xiàn)404錯(cuò)誤。
- 錯(cuò)誤定位:HTTP 404錯(cuò)誤表示請(qǐng)求的資源不存在。
原因分析
- History模式問題:在Vue單頁應(yīng)用(SPA)中,所有用戶交互通過動(dòng)態(tài)重寫當(dāng)前頁面實(shí)現(xiàn)。構(gòu)建物只產(chǎn)出
index.html
,而nginx
配置可能未涵蓋所有路由。 - Hash模式無問題:Hash模式不會(huì)將hash值包含在HTTP請(qǐng)求中,因此不會(huì)因hash變化重新加載頁面,避免了404錯(cuò)誤。
解決方案
- 修改Nginx配置:配置所有頁面請(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頁面。
const router = new VueRouter({ mode: 'history', routes: [ { path: '*', component: NotFoundComponent } ] })
其他后端配置方案(如Apache、Node.js)的核心思想類似,本文不再詳述。
到此這篇關(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-04Vue.use與Vue.prototype的區(qū)別及說明
這篇文章主要介紹了Vue.use與Vue.prototype的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12vue中使用heatmapjs的示例代碼(結(jié)合百度地圖)
這篇文章主要介紹了vue中使用heatmapjs的示例代碼(結(jié)合百度地圖),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-09-09Vue使用高德地圖搭建實(shí)時(shí)公交應(yīng)用功能(地圖 + 附近站點(diǎn)+線路詳情 + 輸入提示+換乘詳情)
這篇文章主要介紹了vue中使用高德地圖搭建實(shí)時(shí)公交應(yīng)用(地圖 + 附近站點(diǎn)+線路詳情 + 輸入提示+換乘詳情),主要是讓大家熟悉下高德地圖在vue中的使用及vue的常用指令,需要的朋友可以參考下2018-05-05用Vue.js方法創(chuàng)建模板并使用多個(gè)模板合成
在本篇文章中小編給大家分享了關(guān)于如何使用Vue.js方法創(chuàng)建模板并使用多個(gè)模板合成的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們學(xué)習(xí)下。2019-06-06element組件中自定義組件的樣式不生效問題(vue scoped scss無效)
這篇文章主要介紹了解決element組件中自定義組件的樣式不生效問題(vue scoped scss無效),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09vue簡(jiǎn)單的二維數(shù)組循環(huán)嵌套方式
這篇文章主要介紹了vue簡(jiǎn)單的二維數(shù)組循環(huán)嵌套方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04