1.项目根目录创建环境变量代码和指定文件
项目根目录创建下面的文件
本地运行测试环境
- .env.dev_test
测试环境
NODE_ENV = 'development'
测试环境,api前缀
VUE_APP_BASE_API = '/api'
测试环境,Url地址
VUE_APP_BASE_RUL = 'https://www.baidu.com/'
本地测试运行(用于连接后端主机ip本地调试代码)
2) .env.development
开发环境
NODE_ENV = 'development'
开发环境,api前缀
VUE_APP_BASE_API = '/api'
开发环境,Url地址
VUE_APP_BASE_RUL = 'https://www.baidu.com/'
打包测试环境
3) .env.prod_test
生产测试环境
NODE_ENV = 'production'
生产测试环境,api前缀
VUE_APP_BASE_API = '/test_api'
测试环境,Url地址
VUE_APP_BASE_RUL = 'http://xxxxxxxxxxx:8081/'
打包正式线上发布环境
4) .env.production
生产正式环境
NODE_ENV = 'production'
生产正式环境,api前缀
VUE_APP_BASE_API = '/api_production'
生产环境,Url地址
VUE_APP_BASE_RUL = 'https://www.baidu.com/'
最终是这样的结构
2.项目根目录创建vue.config.js(有就添加,没有就创建) 配置反向代理解决跨域添加下面的代码
当前配置可以解决请求跨域 和打包页面白板
module.exports = {
devServer: { // 设置代理
host: '0.0.0.0', //
port: 8080, //自定义端口
https: false, //false关闭https,true为开启
open: false, //自动打开浏览器
proxy: {
[process.env.VUE_APP_BASE_API]: {
target: process.env.VUE_APP_BASE_RUL, // 代理的线上的接口地址
// 如果要代理 websockets
ws: true,
changeOrigin: true,
pathRewrite: { //重写路径,这种是没有我们定义的前缀
['^' + process.env.VUE_APP_BASE_API]: ''
}
}
}
},
publicPath: "./"
}
3.封装axios 配置环境变量 让请求本地运行的时候走代理服务器 发布线上的时候同时也可以兼容
src/utils/request.js
import axios from 'axios'
const service = axios.create({
baseURL: process.env.NODE_ENV==='development'?process.env.VUE_APP_BASE_API:process.env.VUE_APP_BASE_RUL, // api 的 base_url
timeout: 5000 // request timeout
})
// 不需要token验证的 接口白名单
// const APIWhite = ['users/login']
// 请求拦截 设置统一header
service.interceptors.request.use(
config => {
return config;
},
error => {
return Promise.reject(error)
}
)
// 响应拦截 401 token过期处理
service.interceptors.response.use(
response => {
return response
},
error => {
return Promise.reject(error)
}
)
export default service
api封装管理
src/api/index.js
import request from '@/utils/request'
// 登录
export function doLogin (data) {
return request({url: '/users/login',method: 'POST', data})
}
4.package.json 对npm脚本 启动配置修改
"scripts": {
"serve": "vue-cli-service serve",
"dev_test": "vue-cli-service serve --mode dev_test",
"build:test": "vue-cli-service build --mode prod_test",
"build:prod": "vue-cli-service build"
},
npm run serve // 本地运行后端主机IP本地调试环境
npm run dev_test // 本地运行测试环境
npm run build:test // 打包测试环境
npm run build:prod //打包线上正式发布环境
在页面使用 :
console.log(process.env) 可以看控制台知道当前环境配置具体是那些