t***@163.com
t***@163.com
  • 发布:2023-03-13 15:37
  • 更新:2023-03-13 16:11
  • 阅读:463

uni.request请求报错提示不友好/提示不能自定义

分类:uni-app

uni.request在网络请求出错的时候,比如无网络或者网络超时(未到服务端),现在只返回一个errMsg,并且中英混杂,直接提示给用户显得并不友好或者说不能自定义提示

{  
    "errMsg": "request:fail abort statusCode:-1 似乎已断开与互联网的连接。(-1009)"  
}


或者这样:

{  
    "errMsg": "request:fail timeout"  
}

以上
诉求:能不能在返回的信息中给一个原始statusCode,比如上面的-1009,如果是这样

{  
    "statusCode": -1009,  
    "errMsg": "request:fail abort statusCode:-1 似乎已断开与互联网的连接。(-1009)"  
}

那么我就可以根据if (statusCode=== -1009) 自定义提示"网络连接已断开xxx...",因为我并不想把英文部分或者中文部分还有(-1009)展示给用户!
以目前的情况,如果想自定义提示,就只能判断if (errMsg==="request:fail abort statusCode:-1 似乎已断开与互联网的连接。(-1009)"),然后自定义提示"网络连接已断开xxx...",if (errMsg==="request:fail timeout") ,然后自定义提示"请求超时xxx...",这样就很不舒服[捂脸]

2023-03-13 15:37 负责人:DCloud_Android_THB 分享
已邀请:
DCloud_UNI_WZF

DCloud_UNI_WZF

uni.request api 的返回值中是有 statusCode 参数的,如确认框架问题,提供下最简可复现demo
另:错误信息的判断应该不需要全等, errMsg.includes('-1009') 就可以吧

  • t***@163.com (作者)

    并没有如你所说,模拟网络拥堵让请求超时的时候"errMsg": "request:fail timeout", 就没有statusCode,你可以用hello-uniapp的hello-uniapp/pages/API/request/request.vue页面点击发起请求试一下,在请求之前把手机的飞行模式打开或者用抓包工具模拟网络不佳的状况让网络超时即可复现,fail: (err)中的err就是上述的内容;

    另:可以不用全等,用正则、includes都可以,但是要摸清各种状况的规律才行,可能其他情况也有-1009呢?

    2023-03-13 16:42

  • t***@163.com (作者)

    还有另外一个问题,我上面所说只适用iOS端,安卓端断网是这样的:"errMsg": "request:fail abort statusCode:-1 Unable to resolve host \"sj-beta.taogegou.com\": No address associated with hostname",这样我就无法判断了

    2023-03-13 16:48

  • DCloud_UNI_WZF

    回复 t***@163.com: 理解你的问题了,这边反馈下

    2023-03-13 17:08

  • t***@163.com (作者)

    回复 DCloud_UNI_WZF: 非常感谢!救了老命了

    2023-03-13 17:22

  • t***@163.com (作者)

    回复 DCloud_UNI_WZF: 请问这个问题有处理计划吗?

    2023-03-27 14:27

  • DCloud_UNI_WZF

    回复 t***@163.com: 客户端同事已跟进该问题,后续会在该贴回复

    2023-03-27 14:35

  • t***@163.com (作者)

    回复 DCloud_UNI_WZF: 两个月了啊,这个问题还解决吗?(¦3」∠)

    2023-05-23 16:20

要回复问题请先登录注册