最近在做微信授权登陆,因为安全性,Acess_Token这一部分是在node上获取,然后再返回给前端。
node用的axios,在获取Acess_Token的时候axios的catch捕获到了一个错误,[TypeError: Converting circular structure to JSON]。
百度搜了一下说是因为 JSON.stringify 引起的,不记得写过JSON.stringify,但还是找了找,就那么几行的代码翻了个底朝天也没看到哪怕有一句的 JSON.stringify。
从头到尾排各种错误各种调试,真是想不出来是哪里的错误,甚至还想换成JQ或者fetch试试,结果……暂且不提。
干脆把ajax那部分的业务逻辑代码全部注释掉,然后只输出获取到的信息,结果catch没有异常了,直接输出了获取到的结果。
找到了突破口就好说了,接下来又一步一步的调试,发现问题是出现在 res.send 的身上。
ajax返回来的数据我放在了一个对象中的属性里,报错。
但是如果只获取拿到的数据中的data字段,也就是不包括axios上的信息只有微信的信息(access_token, expires_in, refresh_token, openid, scope),就可以正常返回了。
初步估计是因为axios返回结果比较特殊,无法正常返回,具体研究有时间会研究一下,这里做一个小标记。