【问题已解决】云函数中的axios突然不执行请求,怎么回事?
问题描述 在用户支付完之后,要将支付结果推送到我们的业务系统,之前使用axios一直正常。 微信小程序云函数、业务系统都没有做任何调整,发现最近一直收不到客户付款的推送。 问题分析 结过排查发现,axios执行请求的代码,没有执行。 包的依赖情况(我看有人反馈axios版问题,我的正好是0.27.2,应该要是正常才对。) { "dependencies": { "axios": "^0.27.2", "md5": "^2.3.0", "qs": "^6.11.0", "wx-server-sdk": "*" } } [图片] 日志结果 [图片] 代码片段1、2、3都没有执行到,也不报错,也没有异常信息。 结论 之前axios请求一切正常,突然不请求,结合日志打印的情况,应该是最近云函数的环境有什么调整,具体什么原因,怎么回事,怎么修改,坐等回复。 问题解决方案 从昨天咨询到今天,售后一直在跟进这个问题,感觉售后对问题也表示怀疑,因为售后那边反馈node16环境下验证代码逻辑没有问题,axios能正常执行请求。面对这种答复,我再次表示本地正常,云上不正常。 然后,售后说在 axios 调用前加上 await 试试,然后这么一试,加上await之后云上就正常了。 问题产生的原因 axios 请求是异步,云函数执行完之后,生命周期就结束了,而异步执行的还没执行。导致业务异常。 在这里对售后服务的耐心点赞。 [图片] 意外收获 解决了业务上的小Bug 之前没有加await,从严格意义上来讲,也是有bug的。在没有完成axios请求后,就给微信返回了成功,如果通知真的失败了,就形成了支付通知的特殊情况。因为之前不加await,axios请求也能正常请求,而且基本上没有出现过异常情况,所以之前隐藏的小bug也没有出现过。现在因为云上环境异步执行的axios存在不执行的情况,加上了await变成了同步,也解决了之前业务上的小bug。