ant-design-pro中使用了mock,我想不使用mock,测试我本地用nodejs起的api服务器。
我在.roadhogrc.mock.js中禁掉了mock
// 是否禁用代理
// const noProxy = process.env.NO_PROXY === 'true';
const noProxy = true
保存并刷新网页,发现mock的数据确实没了。然后我在ant-design-pro的package.json中加入了
"proxy": "http://localhost:9000",
以前我用create-react-app也是这么做的,只要node起一个监听9000端口的服务器就可以调试api了,但是在ant-design-pro中这么做好像行不通,fetch的时候总是404。
正常情况如下,这是我用create-react-app访问的,create-react-app监听的3000,使用proxy访问的本地9000端口:
可以看出是create-react-app访问成功了
ant-design-pro的情况如下,ant-design-pro监听的8001端口,也使用proxy访问的本地9000端口:
ant-design-pro请求失败了,我保证api没错,api测试如下。
请问我该如何使用本地服务器api,而不使用mock。
感谢大神们帮忙!!!
还是让老子自己来回答吧,ant-design-pro的官方文档里有
不过文档是有问题的,官方guihub的issue里也有很多人踩了这个坑,解决方法如下:
官方文档说这样修改就可以了
// .roadhogrc.mock.js
export default {
'GET /api/*': 'https://your.server.com/api/',
};
测试后行不通,应改为如下
export default {
'GET /api/*': 'https://your.server.com/',
};
api可能路径不一定这么单一,进一步修改如下
export default {
'/*': 'https://your.server.com/',
};
直接这么写有些粗暴,万一以后想用mock还得手动改回来,实际上官方已经做了启动命令了。
// .roadhogrc.mock.js
const noProxy = (process.env.NO_PROXY === 'true');
...
export default noProxy ? {} : delay(proxy, 1000);
意思是如果环境变量NO_PROXY是true,那么就不实用代理
如果直接启动项目:npm start,那么NO_PROXY就是false,这样启动就可以了:npm start:no-proxy
可以看到package.json中有如下启动脚本:
"start": "roadhog server",
"start:no-proxy": "cross-env NO_PROXY=true roadhog server"
那么上面那句三目运算就导出了{},只要把重定向的域名写进去就好了,如下:
export default (noProxy
? { "/*": "https://your.server.com/" }
: delay(proxy, 1000));