Vite proxy-rewrite 属性详解

本文讲述了在前端开发中,如何在Vite.config.ts中使用`rewrite`属性解决跨域问题,以及在开发环境和线上环境中,不加和添加rewrite对API请求路径的影响。特别提到了Nginx的转发配置和其在解决前端与后端通信中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在前端开发中,为了避免跨域问题,我们会在vite.config.ts 中配置如下问题

rewrite: 由于不了解Nginx的知识,这个属性一直困扰着我,这个重写有啥用,加和不加有啥影响

  server: {
     host: '0.0.0.0',
     proxy: {
       '/api': {
           target: 'http://192.168.110.188:3091',   // 
           changeOrigin: true,
           rewrite: (path) => path.replace(/^\/api/, '')
        },
      }
    },

假设我们有一个方法 axios.get('/api/getList'), 后端服务为 http://192.168.110.188:3091

1、(开发环境) 不加 rewrite:(path)=>path.replace(/^/api/,'')

       发起请求后,后端接受到接口为http://192.168.110.188:3091/api/getList

        所以这个时候,后端要额外加一个前缀 '/api'

2、(开发环境) 加 rewrite:(path)=>path.replace(/^/api/,'')

       发起请求后,后端接受到接口为http://192.168.110.188:3091/getList

        这个时候,后端不需要额外加一个前缀 '/api'

在线上/测试环境的时候一般需要用Nginx转发,如下面测试配置的nginx转发, localhost 对应的ip 为:http://192.168.xx.xx, 那么测试环境的地址则为:http://192.168.xx.xx/9006

Nginx配置后,如测试环境的请求为:

http://192.168.xx.xx/9006/lytk-api/getUser 则会转发到 后端服务/getUser,不带lytk-api的

补充一下:如果接口返回了 html页面,则是测试或者运维Nginx转发错误,前端不背这个锅

                

        

<think>好的,我现在需要回答用户关于如何配置Vite中的Less、PostCSS以及代理跨域的问题。首先,我得回忆一下Vite的基本配置方式,因为Vite使用vite.config.js作为配置文件。用户可能希望了解如何集成Less预处理,这可能涉及到安装less包以及相关的配置。 接下来是PostCSS部分。Vite默认支持PostCSS,但用户可能需要添加插件,比如autoprefixer。这时候需要创建postcss.config.js文件,并配置相应的插件。我需要确认用户是否需要安装postcss和autoprefixer,以及如何正确配置它们。 然后是代理跨域的问题。在开发环境中,前端经常需要代理API请求以避免跨域问题。Vite的配置是通过server.proxy选项设置代理,这应该是一个对象,键是请求路径前缀,值是目标服务器地址和其他配置。需要举例说明如何将/api开头的请求代理到后端服务器,并可能修改origin和路径重写。 接下来,我需要把这些步骤结构化,确保用户能够一步步跟随操作。可能需要分点说明每个部分的配置,包括安装依赖、修改配置文件、示例代码等。同时,要注意使用正确的中文术语,避免技术术语翻译错误。 在检查过程中,要确保所有代码示例正确,比如使用$...$和$$...$$格式的LaTeX,但根据用户的系统级指令,可能不需要数学公式,但用户的问题不涉及数学内容,所以可能不需要处理。不过需要确认LaTeX语法是否正确,比如代码块是否用反引号包裹,配置示例是否正确。 另外,要提醒用户安装必要的npm包,比如less、postcss、autoprefixer等,并且给出正确的安装命令,比如npm install -D less postcss autoprefixer。同时,确保代理配置中的选项如target、changeOrigin、rewrite是否正确使用。 可能还需要注意常见的陷阱,比如PostCSS配置文件的位置和格式,代理路径重写的正则表达式是否正确,以及修改配置文件后需要重启Vite服务等。如果有必要,可以给出一个完整的vite.config.js示例,帮助用户更直观地理解配置结构。 最后,总结各部分的作用,确保用户理解每个配置的意义,比如Less用于预处理CSS,PostCSS用于后处理,autoprefixer添加浏览器前缀,代理解决开发时的跨域问题。这样用户不仅能配置成功,还能了解背后的原理。</think>以下是 Vite 配置 Less、PostCSS 和代理跨域的步骤详解--- ### 一、配置 Less 预处理器 1. **安装依赖** ```bash npm install -D less ``` 2. **修改 `vite.config.js`** ```javascript export default { css: { preprocessorOptions: { less: { math: "parens-division", // 可选:配置 Less 的数学计算模式 javascriptEnabled: true // 允许 Less 内联 JavaScript } } } } ``` --- ### 二、配置 PostCSS 1. **安装依赖** ```bash npm install -D postcss autoprefixer ``` 2. **创建 `postcss.config.js`** ```javascript export default { plugins: { 'autoprefixer': {} // 自动添加浏览器前缀 // 可扩展其他插件如:postcss-preset-env } } ``` --- ### 三、配置代理跨域 1. **修改 `vite.config.js`** ```javascript export default { server: { proxy: { '/api': { // 以 /api 开头的请求 target: 'http://backend-server.com', // 目标服务器 changeOrigin: true, // 修改请求头中的 origin rewrite: (path) => path.replace(/^\/api/, '') // 路径重写 } // 可配置多个代理规则 } } } ``` --- ### 四、完整配置示例 ```javascript // vite.config.js import { defineConfig } from 'vite' export default defineConfig({ css: { preprocessorOptions: { less: { javascriptEnabled: true } } }, server: { proxy: { '/api': { target: 'http://localhost:3000', changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, '/v1') } } } }) ``` --- ### 关键点说明 1. **Less 配置** - 支持 `.less` 文件自动编译 - 通过 `preprocessorOptions` 可配置全局变量等高级特性 2. **PostCSS 扩展** - 可添加 `postcss-preset-env` 等插件支持新 CSS 特性 - 自动处理浏览器兼容性 3. **代理注意事项** - `changeOrigin: true` 解决部分服务器的 origin 校验 - 路径重写可隐藏实际后端路径 - 仅开发环境生效,生产环境需通过服务器配置 配置完成后重启 Vite 服务即可生效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值