首页> 资讯 > > 详情

热头条丨craco配置devServer.proxy

2023-03-17 22:06:19 来源:腾讯云


(资料图片仅供参考)

前端浏览器环境直接访问后端接口,出于对用户数据的保护,非同源会有跨域问题。

在本地开发联调时,借助webpack dev server启动的Node服务来代理转发请求,可以解决这个问题。

在使用 craco(Create React App Configuration Override)创建的React项目中配置devServer.porxy只需要修改craco.config.js即可,如下:

const devProxyConfig = require("./devProxyConfig");module.exports = {    webpack: {},    babel: {},    plugins: {},    devServer: {        proxy: {            "/api": {                target: devProxyConfig.getTarget(DATA_ENV),                changeOrigin: true,                onProxyReq(proxyReq) {                    // 设置Cookie                    proxyReq.setHeader("Cookie", devProxyConfig.getCookie(DATA_ENV));                },            },        },    }}

这里封装了两个方法,getTarget和getCookie,用于判断要联调的环境并返回对应的地址和Cookie,如下

// devProxyConfig.jsmodule.exports = {    getTarget(env) {        switch (env) {            case "sandbox":                return "http://...sandbox.com:8888";            case "online":                return "http://online.com";            default:                return "https://mockup.com";        }    },    getCookie(env) {        switch (env) {            case "online":                return "..."; // 线上Cookie            default:                return "..."; // 沙盒Cookie        }    },};

这样,我们就可以通过命令向devServer传参数来快速启动各个环境,而不用在切换时去修改这些值了,命令如下:

{    "scripts": {        "start": "craco start",        "sandbox": "env DATA_ENV="sandbox" craco start",        "online": "env DATA_ENV="online" craco start",    },}

关键词:

上一篇:世界百事通!冠盛股份:公司与国机精工达成了战略合作,国机精工在轴承端处于国内技术头部单位,新能源汽车智能底盘未来会有很好的发展前景
下一篇:最后一页