使用create-react-app创建项目后,在本地开发时 ,配置请求转发是常见的。配置转发之后我们在本地环境就能请求到服务器的接口。
使用以下命令生成本地webpack配置文件
npm run eject
生成配置文件后,就到配置代理了,也就是请求转发。create-react-app创建的项目与其他的不同,需要在package.json中配置。
"proxy":{
"/rank/**":{
"target":"http://m.kugou.com",
"changeOrigin": true
}
}
在package.json下进行如上配置, 表示会将/rank/下的所有请求转发到http://m.kugou.com,
如果这样配置,你的请求可以成功 转发了,恭喜你。如果没有成功,遇到403之类的错误或者404的,多半是配置方式不对,或者可能webpack的版本不对。总之这种配置方式无法进行请求转发。通过阅读代理配置的部分npm包发现webpack-dev-server中的start.js与react-dev-utils下的webpackDevServerUtils中对于代理配置的处理方式不兼容。也许是以上配置的方式不对,但没找到可行的配置,后将webpackDevServerUtils中的prepareProxy方法作了下修改,代理成功了。如下图所示
大概在文件的365行,将大红框部分的代码注释改成小红框部分,按以上配置就可以成功代理了。
如果你的代理或者版本未出现问题,忽视如上修改。