vite配置跨域代理proxy

vite.config.ts

import { defineConfig, loadEnv } from 'vite'
import createProxyConfig from './config-c/proxy'
export default defineConfig((configEnv) => {
    const config = loadEnv(configEnv.mode, './')
    return {
        server: {
          port: 3000, // 配置服务器端口
          open: true, // 是否自动打开浏览器
          cors: true, // 允许跨域
          proxy: createProxyConfig(config)  // 导入proxy方法
        }
    }
}

./config-c/proxy.ts 封装proxy方法

import type { ProxyOptions } from 'vite'

/**
 * 跨域配置,网络代理
 * VITE_HTTP_PROXY  是否开启代理
 * VITE_BASE_URL    代理的http
 * VITE_PROXY_NAME  代理的名称
 */
const createProxyConfig = (config: Record<string, string>) => {
  const { VITE_HTTP_PROXY, VITE_BASE_URL, VITE_PROXY_NAME } = config
  const isOpenProxy = VITE_HTTP_PROXY === 'true'
  const envConfig = { api: VITE_BASE_URL, proxyName: VITE_PROXY_NAME }

  if (!isOpenProxy) return undefined
  const proxy: Record<string, string | ProxyOptions> = {
    [envConfig.proxyName]: {
      target: envConfig.api,
      changeOrigin: true,
      rewrite: (path) => path.replace(new RegExp(`^${envConfig.proxyName}`), '')
    }
  }
  return proxy
}

export default createProxyConfig

.env.development 开发环境

VITE_HTTP_PROXY = true
VITE_PROXY_NAME = '/api'
VITE_BASE_URL='http://xxxxx.cn/api'

.env.production 生产环境

VITE_HTTP_PROXY = false
VITE_PROXY_NAME = '/api'
VITE_BASE_URL='http://xxxxx.cn/api'

封装的proxy文件放在src文件夹同级下的情况需要配置一下tsconfig.node.json的include

{
  "compilerOptions": {
    "composite": true,
    "module": "esnext",
    "moduleResolution": "node"
  },
  "include": ["vite.config.ts", "config-c/*.ts"]
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值