上传大文件时电脑休眠、页面静置导致接口报网络错误,上传失败
最近遇到了上传文件遇到网络波动、超时、网络中断情况下需要重传的需求 刚开始排查只能在控制台看到报错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' ) {
}
} )