共计 1793 个字符,预计需要花费 5 分钟才能阅读完成。
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 中添加
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':'/'}
}
}
}
}
这样就可以根据不同的环境配置不同的地址了。
正文完
发表至: javascript
2019-06-20