package.json 配置 proxy 代理报错, 报错信息如下:

来源:2-2 Mock数据的使用

宝慕林6688393

2019-01-26

When specified, "proxy" in package.json must be a string.
Instead, the type of "proxy" was "object".
Either remove "proxy" from package.json, or make it a string.
写回答

3回答

艾特老干部

2019-01-26

你好,这个是create-react-app版本的问题。课程录制时,create-react-app的版本是1.x,支持proxy值设置为object类型。当前2.x已经发布,但不支持object类型的proxy值。

解决这个问题有3种方法:

方法1:将package.json中的proxy配置改为: "proxy": "http://localhost:5000"。

方法2:

    1. 安装 http-proxy-middleware,在项目根路径下执行: npm install http-proxy-middleware

    2. 在src文件夹根目录下,创建 setupProxy.js 文件,文件内容为:

const proxy = require('http-proxy-middleware');

module.exports = function(app) {
  app.use(proxy('/api', { target: 'http://localhost:5000/' }));
};

     3. 删除package.json中的原有proxy配置。

方法3: 将package.json中的依赖react-scripts的版本改为1.x,例如课程录制时使用的是1.1.4。


3
2
东风破
如果按方法一的话虽然启动不报错,但是没有代理到指定的接口
2019-03-06
共2条回复

郭纯

2019-01-26

因为create-react-app 版本的问题 现在的proxy的值只能是一个字符窜。

例如: "proxy":  "http://localhost:5000"

但是有两种办法解决

1:降低create-react-app 版本

2:替代方案

npm install http-proxy-middleware --save 安装http-proxy-middleware

在src/目录创建 setupProxy.js 文件

文件内容

const proxy = require('http-proxy-middleware');

module.exports = function(app) {

app.use(proxy('/api', { target: 'http://localhost:5000/' }));

};


5
0

ChelFannie

2020-12-29

When specified, "proxy" in package.json must be a string.
Instead, the type of "proxy" was "object".
Either remove "proxy" from package.json, or make it a string.

看过老师之前的回答了,不管是哪个方法都无效,希望老师能解答一下,谢谢!

0
0

React16+Redux实战企业级大众点评Web App

从架构设计到部署上线,带你学习React技术栈与核心思想

1071 学习 · 306 问题

查看课程