前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >React 使用 Proxy 代理(create-react-app)

React 使用 Proxy 代理(create-react-app)

作者头像
SpiritLing
发布2020-07-20 10:11:29
11.6K0
发布2020-07-20 10:11:29
举报
文章被收录于专栏:SpiritLingSpiritLingSpiritLing

在create-react-app 中配置proxy代理

proxy,默认为NULL,类型为URL,一个为了发送http请求的代理 在平时开发时,尤其前后端分离时,需要假数据来进行模拟请求,这个时候就需要proxy代理来处理

create-react-app < 2.0

package.json 中配置

"proxy":{
   "/api/**":{
      "target":"https://easymock.spiritling.pub/",
      "changeOrigin": true
    }
}

create-react-app > 2.0

package.json 中配置(不推荐)
"proxy": "https://easymock.spiritling.pub/",
配置文件 /src/setupProxy.js (推荐)

create-react-app 解包后,可以在 config 文件夹下找到配置

config/path.js 中存在 proxySetup: resolveApp('src/setupProxy.js'),

proxySetup 是只在 webpackDevServer.config.js 文件中使用,也就是说只在开发时使用

所以,可以在 /src/setupProxy.js 中配置

首先安装 http-proxy-middleware

npm install http-proxy-middleware -D

然后文件配置

const proxy = require('http-proxy-middleware');
module.exports = function (app) {
    app.use(
        '/api/v1/',
        proxy({
            target : 'https://easymock.spiritling.pub/',
            changeOrigin : true,  // 设置跨域请求
            PathRewrite : {
                '^/api/v1' : '' // 将/api/v1 变为 ''
            }
        })
    );
};

使用例子

01
const proxy = require('http-proxy-middleware');
module.exports = function (app) {
    app.use(
        '/api/v1/',
        proxy({
            target : 'https://easymock.spiritling.pub/',
            changeOrigin : true
        })
    );
};

游览器中请求为 https://example.com/api/v1/login

则经过代理后可以转为 https://easymock.spiritling.pub/api/v1/login

02
const proxy = require('http-proxy-middleware');
module.exports = function (app) {
    app.use(
        '/api/v1/',
        proxy({
            target : 'https://easymock.spiritling.pub/',
            changeOrigin : true,
            PathRewrite : {
                '^/api/v1' : ''
            }
        })
    );
};

游览器中请求为 https://example.com/api/v1/login

则经过代理后可以转为 https://easymock.spiritling.pub/login

create-react-app官方-Proxying API Requests in Development

http-proxy-middleware 新版本 ≧ 1.0.0

在新版本大于等于 1.0.0 时使用会出现如下问题

proxy is not a function

也就是说 http-proxy-middleware 或者 setupProxy 会出现报错 proxy is not a function

所以需要使用新版本的写法才可以

const { createProxyMiddleware } = require('http-proxy-middleware');

module.exports = function (app) {
    app.use(createProxyMiddleware('/api/v1', {
        target : 'https://easymock.spiritling.pub',
        changeOrigin : true,
        ws: true,
        pathRewrite : {
            '^/api/v1' : ''
        },
    }));
};
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-07-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在create-react-app 中配置proxy代理
    • create-react-app < 2.0
      • create-react-app > 2.0
        • package.json 中配置(不推荐)
        • 配置文件 /src/setupProxy.js (推荐)
      • 使用例子
        • 01
        • 02
    • http-proxy-middleware 新版本 ≧ 1.0.0
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档