Vue多環境代理配置


背景: 

多人協作模式下,修改代理比較麻煩,而且很容易某個開發人員會修改了vue.config.js文件后提交了。第一,很容易引起沖突。 第二,很容易出現代理錯誤,需要排查。而且現在微服務盛行,在生產環境下有網關配置,不會出錯,但是在本地調試會造成麻煩,如修改了代理地址需要同步修改代理中的地址,很麻煩也很容易出錯。

 

解決思路:

 

1.開發中定義常量js文件,例如constants.js。用戶存放各個服務需要代理的服務名。  

 let api = "" let loginServer = "/loginServer" let businessServer = "/businessServe" if(process.env.NODE_ENV == "development"){ api = "/api" loginServer = api + LoginServer businessServer = api + businessServer } export { loginServer, businessServer }

其中api為代理規則中配置,loginServer為服務名,可根據業務需要替換 在實際的業務中就可以這么用  

 import {loginServer} from 'constants' function login(params){ return axios.post(loginServer+"/login",params) }

其中 loginServer為服務名,login為方法名,params為參數。在vue.config.js中配置代理

modules.exports = {
    publicPath:"/" , devServer: { port: 8080, proxy:{ '/api/loginServer':{ target:"http://localhost:8080", ws:true, changeOrigin:true, pathRewrite:{ '^/api':'/' } }, '/api/businessServer':{ target:"http://localhost:8081", ws:true, changeOrigin:true, pathRewrite:{ '^/api':'/' } } } } }

這么配置可以滿足需求,但是會有多人改動vue.config.js的情況,造成以上說的錯誤。

 

 

解決方案:

vue中提供了 --mode 模式,並提供了 .env.local 等文件,此文件被git忽略,且可根據當前 mode設置的值尋找環境變量配置,例如 --mode=dev ,則.env.dev.local 或.env.dev 等文件中的配置會生效,.local文件會被git忽略,因此咱們用這個,--mode設置在 package.json中,在npm run serve 中添加

資源搜索網站大全 https://www.renrenfan.com.cn 廣州VI設計公司https://www.houdianzi.com

script:{
"serve":"vue-cli-service serve --mode=dev" }

在項目根目錄下jianli .env.dev.local文件,文件中添加 以下鍵值對(此文件中只接受鍵值對)
.env.dev.local

loginServerURL =http://localhost:8080 businessServerURL = http://localhost:8081

當然可根據不同的模式建立不同的local文件.env.prod.local等

vue.config.js中改寫

modules.exports = {
    publicPath:"/" , devServer: { port: 8080, proxy:{ '/api/loginServer':{ target:process.env.loginServerURL?process.env.loginServerURL:"httpL//localhost:8080", ws:true, changeOrigin:true, pathRewrite:{ '^/api':'/' } }, '/api/businessServer':{ target:process.env.loginServerURL?process.env.businessServerURL :"http://localhost:8081", ws:true, changeOrigin:true, pathRewrite:{ '^/api':'/' } } } } }

這樣就可以根據不同的環境配置不同的地址了。


免責聲明!

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



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