vue.config.js
dev{
proxyTable: {
'/api': {
target: '<http://192.168.0.1:200>', // 要代理的域名
changeOrigin: true,//允许跨域
pathRewrite: {
'^/api': '' // 这个是定义要访问的路径,名字随便写
}
}
}
// /api/getMenu相当于\*<http://192.168.0.1:200/getMenu>
// /api相当于<http://192.168.0.1:200>
this.\$http.get("/api/getMenu", {
}
.then(res => {
})
.catch(function(error) {
});
以上配置只是在开发环境(dev)中解决跨域。要解决生产环境的跨域问题,则在`config/dev.env.js`和`config/prod.env.js`里也就是开发/生产环境下分别配置一下请求的地址`API_HOST`,开发环境中我们用上面配置的代理地址api,生产环境下用正常的接口地址。配置代码如下:
module.exports = merge(prodEnv, {
NODE\_ENV: '"development"', //开发环境
API\_HOST:"/api/"
})
module.exports = {
NODE\_ENV: '"production"', //生产环境
API\_HOST:'"<http://40.00.100.100:3002/>"'
}
vite.config.js
import { defineConfig, loadEnv } from 'vite'
import path from 'path'
import createVitePlugins from './vite/plugins'
export default defineConfig(({command, mode })=>{
const env = loadEnv(mode, process.cwd());
const {VITE_APP_ENV} = env
return{
base: VITE_APP_ENV==='字段名' ? '/' : '/',
plugins: createVitePlugins(env, command === 'build'),
resolve: {
alias: {
"~": path.resolve(__dirname, "./"),
"@": path.resolve(__dirname, "./src"),
},
extensions : ['.mjs', '.js', '.mts', '.ts', '.jsx', '.tsx', '.json','.vue']
},
server: {
port: "9000",
host:true,
open: true,
proxy: {
'/dev-api': {
target: "https://xxxx.com/",
changeOrigin: true,
rewrite: (p) => p.replace(/^\/dev-api/, '')
},
'/prod-api': {
target: "https://xxxx.com/",
changeOrigin: true,
rewrite: (p) => p.replace(/^\/prod-api/, '')
},
}
},
css: {
postcss: {
plugins: [
{
postcssPlugin: 'internal:charset-removal',
AtRule: {
charset: (atRule) => {
if (atRule.name === 'charset') {
atRule.remove();
}
}
}
}
]
},
},
}
})