vue打包后接口報錯


最近自己和朋友做了一個小的項目,用的是vue3.x版本,本地dev運行的時候接口什么的都是正常的,但是build打包后本地使用anywhere啟動一個本地服務的時候發現接口報錯405狀態,發布到線上接口直接報錯404。

很奇怪,因為本地都是好的沒有道理線上的不行。

我第一時間想到的很大可能是設置代理的部分出了問題。

首先我排查了本地的代碼,本地代碼是ok的,然后和之前2.x版本的代理配置比對,也沒有發現問題所在。

然后在谷歌上面找到了一個原因:

vue的代理配置只是在dev的時候啟動,打包的時候並沒有把這個代理配置進去。

也就是說生產環境是沒有代理的,而我們的項目因為后端的原因設置了兩個端口號(正常來講一個項目的話,給到前端應該是同一個ip同一個端口號,不同的地址后端去做nginx代理),因為兩個端口號,為了避免接口出錯我直接把代理部分設置為了帶有ip地址的接口,在axios里面把baseURL去掉了,這樣就造成dev時候代理啟用,所以接口不報錯,anywhere的時候代理沒有啟用所以就有跨域,而在線上因為端口號不一樣,直接就找不到。

然后我又重新改造了前端的代碼,在封裝了post方法的里面把baseURL設置為傳參而不是默認值,相當於增加了一個參數(實際項目中不建議這樣做)。

至此問題解決。

因為使用了3.x的版本,在打包的時候需要注意打包后引用的js和css的路徑問題。

關於baseUrl:

baseUrl會附加到你綁定的axios實例(如果是全局的,那就是所有實例)上,即如果get/post的url參數是相對路徑(如) /api/c/xx,那就會執行 baseUrl + '/api/c/xx',如果未指定baseUrl,那就走瀏覽器地址欄里的base + baseUrl。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM