2021/05/18 json格式错误

api.js里面的接口名重复(修改后还是报错),本来想着放弃了,以为今天是搞不定的了,但是在最后终于让我找到了答案,一下是我解题步骤:

先看控制台Network--Preview报错:返回:两个http://localhost/undefined、一个刷新页面接口、一个获取菜单接口

1、确定排查方向:我向几个有可能出错的地方做了打印:logo.js、BasicLayout.jsx、http.js,最终确定是定位在了http.js,

因为很明显报错信息就是源自这里,而且往logo.js、BasicLayout.jsx打印也没得出关键信息,便决定在这里深入排查;

2、阅读报错信息:刷新页面接和获取菜单接口能返回想要的数据,正常,但是这两个http://localhost/undefined我就看不懂(后来理解为:后台拿不到前台传递的参数,参数有误拼接为undefined),

3、打印:刚开始时我是以为刷新接口或者菜单接口有问题,会不会是执行了两边刷新和两边菜单接口呢,于是我就去了http.js那里打印,打印一看,果然:

打印出4条接口url,两条是undefined,另外两条分别是刷新和菜单的接口,那么问题来了,这个接口url显示为undefined的是什么呢,

我一度以为这是刷新(获取菜单)一遍,第二遍系统再次执行接口(后来才知道不是),我是打印那个前台传递给后台的api地址的,我一直在打印这个,没法了我就随便打印点其他什么东西,

结果有了惊人的发现!

结果:打印某个参数,发现那两个undefined指向没有在api.js记录的接口!!简而言之,页面加载触发了一个组件里面的api,但是这个api没有记录在api.js里面,

结果导致获取到未定的接口,当获取到未定义接口,后台拿到的就是http://localhost/undefined,

有趣的是,当react挂载失败时,也就是http://localhost/undefined会指向一个没有js的html模板,而这个模板是react挂载的根节点,这也就是为什么一点击http://localhost/undefined会弹出一个页面的原因。

答案:在api.js里面记录那两个接口,或者直接删掉它们。

posted @ 2022-04-01 15:47  叶乘风  阅读(215)  评论(0编辑  收藏  举报