最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue3配置代理后頁面500/404問題

 更新時(shí)間:2025年04月03日 10:07:12   作者:Suciy  
這篇文章主要介紹了Vue3配置代理后頁面500/404問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

問題

項(xiàng)目基礎(chǔ)配置:Vite+Vue-Router 4.0+Vue3

項(xiàng)目進(jìn)入聯(lián)調(diào)階段,開始配置接口代理。由于項(xiàng)目需要單點(diǎn)登錄,于是就給項(xiàng)目增加了一個(gè)域名,也就是vue-router中的base字段。

const router = VueRouter.createRouter({
  history: VueRouter.createWebHashHistory('/my-app'),
  routes: []
})

這個(gè)配置需要配合Vite.config.ts的base字段一起修改:

export default ({ mode }) => {
  return defineConfig({
     base: '/my-app'
  })
}

但是配置完后前端頁面一直處于404的狀態(tài),網(wǎng)絡(luò)請求顯示500,我以為是路由的問題各種排查,甚至把官網(wǎng)Vue-Router的實(shí)例down下來,發(fā)現(xiàn)人家都是可以的。

最后一個(gè)一個(gè)配置排查發(fā)現(xiàn),proxy的代理的接口前綴和base重名了,修改代理名稱就可以

export default ({ mode }) => {
  return defineConfig({
     base: '/my-app',
     server: {
     open: true,
     port: 3000,
     host: '0.0.0.0',
     proxy: {
        '/my-app': {
          target: '...',
          changeOrigin: true,
          ws: true
        }
      }
    }
  })
}

最后解決方法:調(diào)用接口的地方增加一個(gè)自定義前綴,在vite.config中proxy配置中,增加一個(gè)rewrite即可。

axios.get('/test/my-app/interface1')
 export default ({ mode }) => {
  return defineConfig({
     base: '/my-app',
     server: {
     open: true,
     port: 3000,
     host: '0.0.0.0',
     proxy: {
        '/test': {
          target: '...',
          changeOrigin: true,
          ws: true,
          rewrite: (path) => path.replace(/^\/test/, '')
        }
      }
    }
  })
}

溯源

問題是解決了,但是為什么會(huì)出現(xiàn)這個(gè)問題呢?

  • base:base 是 Vite 配置中的一個(gè)選項(xiàng),用于指定項(xiàng)目的基本公共路徑。它決定了在構(gòu)建和開發(fā)過程中加載靜態(tài)資源的路徑。如果你的項(xiàng)目部署在子路徑下(例如 https://example.com/my-app/),你可以將 base 設(shè)置為 /my-app/,這樣 Vite 就會(huì)正確地加載靜態(tài)資源。
  • proxy:proxy 是 Vite 配置中的一個(gè)選項(xiàng),用于配置開發(fā)服務(wù)器的代理轉(zhuǎn)發(fā)。通過 proxy,你可以在開發(fā)過程中將特定的 HTTP 請求代理到不同的目標(biāo)地址。這對(duì)于解決前端開發(fā)過程中的跨域問題非常有用。

它們看起來獨(dú)立的配置選項(xiàng),分別用于不同的功能:

  • base是用于指定項(xiàng)目的基本公共路徑,影響靜態(tài)資源的加載路徑。
  • proxy是用于配置開發(fā)服務(wù)器的代理轉(zhuǎn)發(fā),解決跨域問題。

但是注意base的作用是影響靜態(tài)資源的加載路徑,那么靜態(tài)文件資源是怎么加載呢?

在vite的源碼中(https://github.com/vitejs/vite/blob/main/packages/vite/src/client/overlay.ts),我們可以看見這樣一句代碼:

可以看見,vite是將base拼接的地址通過fetch加載文件,fetch是一個(gè)異步請求,如果此時(shí)base與代理地址重名,那么靜態(tài)資源將會(huì)被代理到服務(wù)器,所以會(huì)出現(xiàn)文件找不到的問題。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

类乌齐县| 新泰市| 大石桥市| 即墨市| 贵定县| 顺平县| 普陀区| 汉川市| 兴和县| 邹平县| 康乐县| 界首市| 临汾市| 友谊县| 高台县| 浮山县| 新乡市| 同心县| 胶州市| 文水县| 临泉县| 嘉善县| 神农架林区| 绩溪县| 东兴市| 青神县| 青龙| 新宾| 基隆市| 平谷区| 镇巴县| 浦县| 开封县| 古丈县| 尼玛县| 时尚| 湟源县| 鄂伦春自治旗| 阿拉尔市| 晋城| 荔波县|