vue项目配置了反向代理,打包时要修改哪些地方
反向代理只在本地环境下生效,打包到线上需要后端处理,或配置nginx
引用 皆我百晓生 小程序回复内容作答:
当你在Vue项目中配置了反向代理后,在打包时需要修改以下几个地方:
module.exports = {
// ...其他配置项
devServer: {
proxy: {
'/api': {
target: 'http://your-proxy-url', // 设置代理目标
changeOrigin: true, // 是否改变原始主机头为目标URL
pathRewrite: {
'^/api': '' // 路径重写为''
}
}
}
}
}
其中,target
字段需要填写代理目标的URL,pathRewrite
字段用于重写URL路径。
npm run build
,可以在package.json文件中修改为:{
"scripts": {
"build:test": "npm run build -- --mode test"
}
}
这里我们新增了一个build:test命令,指定了mode为test,即使用测试环境的配置。
module.exports = {
// ...其他配置项
devServer: {
proxy: process.env.NODE_ENV === 'production' ? '/api' : {
'/api': {
target: 'http://your-proxy-url',
changeOrigin: true,
pathRewrite: {
'^/api': ''
}
}
}
}
}
在production环境下,直接使用'/api'作为代理路径。
以上是常见的修改方法,具体根据你的项目和需求可能会有所不同。最后,在打包前记得确认以上修改是否生效,并根据实际情况调整配置。
【相关推荐】
在一些特殊的项目上,写好代码打包后,在某些内网环境下的部署人员需要更改一些比如公共的请求路径等配置,直接找请求的文件是找不到的,我们需要手动添加一个不会被打包编辑的文件,这里可以选择在public文件夹里面新建一个 config.jsonc 文件,然后在mian.js里面 new vue之前,通过axios先加载这个本地文件,然后再绑定到vue.prototype上面,这样,只要更改config.jsonc文件里面的参数,就能在打包后也可以随时更改一些参数配置。
示例如下:
其中 config.jsonc 就是一个json格式的文件,不过可以添加注释
在main.js里面导入axios,通过axios.get来请求这个文件
import axios from 'axios';
axios.get('./config.jsonc').then(res => {
// eslint-disable-next-line no-new-func
const config = Function(`return ${res.data}`)();
const { viewer } = config;
if (viewer) {
Vue.prototype.$viewer = viewer.$url_map;
}
new Vue({
router,
render: h => h(App)
}).$mount('#app');
});
这时,在组件上通过this.$viewer即可访问到这个属性。
如果需要在单独的js文件上面访问prototype上绑定的属性,可以进行如下操作:
import Vue from 'vue';
function getBaseUrl() {
return Vue.prototype.$viewer ;
}
项目的特殊性,打包后某些配置需更改,在此记录一下。