上传大文件时电脑休眠、页面静置导致接口报网络错误,上传失败
- 最近遇到了上传文件遇到网络波动、超时、网络中断情况下需要重传的需求
- 刚开始排查只能在控制台看到报错net::ERR_NETWORK_IO_SUSPENDED,一头雾水。
- 后加上catch捕获异常进行判断
fetch('/upload',{file: file})
.then(res=>{
})
.catch(err=>{
console.log(err)
if(err === 'Error: Network Error'){
}
})
- 后面查了MDN关于Error对象的描述才知道,err是一个对象,它有name、message、stack三个属性可以查看错误信息的详情。
- 调试的时候在上面代码的基础上加入以下代码。
console.error('错误的属性:', err.message)
console.error('错误的类型:', err.name)
console.error('错误的堆栈:', err.stack)
console.error('错误的原因:', err.case)
- 控制台打印出了net::ERR_NETWORK_IO_SUSPENDED的错误信息

- 我就可以使用err.message进行判断,是网络错误就进行重传处理解决问题
fetch('/upload',{file: file})
.then(res=>{
})
.catch(err=>{
console.error('错误的属性:', err.message)
console.error('错误的类型:', err.name)
console.error('错误的堆栈:', err.stack)
console.error('错误的原因:', err.case)
if(err.message === 'Network Error'){
}
})