fix(http): 网络异常透传微信 errMsg,暴露真实失败原因(域名拦截/断网/超时)
This commit is contained in:
parent
bb9f869a3e
commit
55c3ab8874
|
|
@ -81,7 +81,9 @@ export async function request<T>(
|
||||||
header: headers
|
header: headers
|
||||||
})
|
})
|
||||||
} catch (e) {
|
} 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) {
|
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 () => {
|
it('需鉴权请求注入 Bearer token 头', async () => {
|
||||||
mockRequest.mockResolvedValue(okBody(null))
|
mockRequest.mockResolvedValue(okBody(null))
|
||||||
await request.get('/demo')
|
await request.get('/demo')
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue