fix(http): 网络异常透传微信 errMsg,暴露真实失败原因(域名拦截/断网/超时)
This commit is contained in:
parent
bb9f869a3e
commit
55c3ab8874
|
|
@ -81,7 +81,9 @@ export async function request<T>(
|
|||
header: headers
|
||||
})
|
||||
} catch (e) {
|
||||
throw new ApiError(e instanceof Error ? e.message : '网络异常')
|
||||
// Taro 网络 API reject 的是 { errMsg } 形状对象而非 Error 实例,需兼容读取以便透出真实原因
|
||||
const raw = e instanceof Error ? e.message : (e as { errMsg?: string })?.errMsg
|
||||
throw new ApiError(raw || '网络异常')
|
||||
}
|
||||
|
||||
if (res.statusCode !== 200) {
|
||||
|
|
|
|||
|
|
@ -87,6 +87,22 @@ describe('client envelope 解析', () => {
|
|||
})
|
||||
})
|
||||
|
||||
it('Taro.request reject 的是 { errMsg } 形状对象时透传 errMsg(微信真实失败形态)', async () => {
|
||||
mockRequest.mockRejectedValue({ errMsg: 'request:fail url not in domain list' })
|
||||
await expect(request.get('/demo')).rejects.toMatchObject({
|
||||
name: 'ApiError',
|
||||
message: 'request:fail url not in domain list'
|
||||
})
|
||||
})
|
||||
|
||||
it('reject 无任何可读信息时兜底「网络异常」', async () => {
|
||||
mockRequest.mockRejectedValue(undefined)
|
||||
await expect(request.get('/demo')).rejects.toMatchObject({
|
||||
name: 'ApiError',
|
||||
message: '网络异常'
|
||||
})
|
||||
})
|
||||
|
||||
it('需鉴权请求注入 Bearer token 头', async () => {
|
||||
mockRequest.mockResolvedValue(okBody(null))
|
||||
await request.get('/demo')
|
||||
|
|
|
|||
Loading…
Reference in New Issue