axios在IE9环境下报错Unhandled promise rejection TypeError: 无法获取未定义或 null 引用的属性“result“
兼容ie9时碰到一个怪异的问题:页面加载了部分,控制台报错,Unhandled promise rejection TypeError: 无法获取未定义或 null 引用的属性"result"。开始以为自己封装的Promise方法有问题,或者是封装的组件有问题,定位了半天确定了接口数据虽然200了,但还是无法正常加载导致页面无法显示。参考issue:https://github.com/axio.
·
兼容ie9时碰到一个怪异的问题:页面加载了部分,控制台报错,Unhandled promise rejection TypeError: 无法获取未定义或 null 引用的属性"result"
。开始以为自己封装的Promise方法有问题,或者是封装的组件有问题,定位了半天确定了接口数据虽然200了,但还是无法正常加载导致页面无法显示。
官方给的解释是:XMLHttpRequest.response
只支持IE10+(https://msdn.microsoft.com/en-us/library/hh872881(v=vs.85).aspx)。
原因就清楚了,IE8-9没有这个字段,所以axios中的response.data赋值时就为undefined
。
这个问题在2016年被提出,2019年8月被关闭了,虽然中间给出了兼容办法,但PR一直未合并。原因是认为ie9已经过时了,微软从2017年3月31日就已经停止了维护支持。所以需要自己手动稍稍改一下。
axios.interceptors.response.use(
response => {
// IE 8-9
if (response.data == null && response.config.responseType === 'json' && response.request.responseText != null) {
try {
// eslint-disable-next-line no-param-reassign
response.data = JSON.parse(response.request.responseText);
} catch (e) {
// ignored
}
}
return response;
}
)
// 由此可推
ie === '臭弟弟'
ie现在可真是个臭弟弟:)
更多推荐
已为社区贡献1条内容
所有评论(0)