adwin's blog
electron下使用axios网络请求错误的问题
post by:adwin 2020-4-14 22:01

百度基本没找到什么有用的答案,但是由于我之前在VUE的单页面应用中使用axios是没有任何问题的,包括服务端的跨域问题也都是不存在的,那么基本上想一下也基本就是和electron有关了。

最后找了一圈之后,终于在官方GitHub的issues中找到类似的问题:https://github.com/axios/axios/issues/1097

最终通过在请求之前加上一行

axios.defaults.adapter = require('axios/lib/adapters/http');
axios.defaults.adapter = require('axios/lib/adapters/xhr');

即可解决问题,据说是因为electron环境下必须强制使用node的网络请求模块,谁知道呢,反正问题解决了就行。

-----------------------后记

后来通过看axios的源码之后了解了原理,原来axios是可以使用node的http.js或者xhr.js作为请求的依赖库的,默认使用的是xhr.js,但是在electron中,最开始的时候是不能访问网络的,使用http.js却可以,同样的网络环境同样的配置什么什么全都一样,就是有这个问题也不知道是为什么,后来就莫名其妙的自己好了,什么也没改……但是其实这里还有一个问题,就是axios有一个下载进度的功能,也就是配置项里的onDownloadProgress项,这在使用http.js库的时候是无效的,因为http.js库本身也没有实现下载进度,但是xhr.js实现了,所以在默认的xhr.js中是可以实现下载进度的,可以使用onDownloadProgress项配置下载进度的回调函数。

评论:
发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容