1***@163.com
1***@163.com
  • 发布:2020-12-18 12:44
  • 更新:2020-12-18 12:44
  • 阅读:1676

【报Bug】在钉钉小程序里uni.request 错误码为500或401时,不返回数据里的data信息

分类:uni-app

产品分类: uniapp/小程序/阿里

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: 11.0.1 (20B29)

HBuilderX类型: 正式

HBuilderX版本号: 2.9.8

第三方开发者工具版本号: 1.15.7 (1.15.7)

基础库版本号: 不知道填啥

项目创建方式: HBuilderX

示例代码:
    uni.showLoading({  
        title: "加载中"  
    });  
    const {  
        url,  
        method,  
        data  
    } = options;  
    var token = store.getToken()  
    const reduce = store.getSysReduceTime()  
    let header = {  
        "content-type": "application/json;charset=UTF-8"  
    };  
    if (token) {  
        header["T-ACCESS-TOKEN"] = token;  
    } else {  
        header["T-UUID"] = store.getUUID()  
    }  
    header["T-TENANT"] = getApp().globalData.tenant;  
    header["T-TIME"] = new Date().getTime() + reduce + "";  
    header["T-APP-ID-Ding"] = getApp().globalData.ddConfig.agentId;  
    var myUrl = url  
    if (!url.startsWith('http')) {  
        myUrl = getApp().globalData.BASE_URL + url  
    }  
    return uni.request({  
        url: myUrl,  
        method,  
        data,  
        header,  
        timeout: 30000  
    }).then(data => {  
        var [error, res] = data;  
        console.log(error, res)  
        uni.hideLoading();  
        if (error) {  
            console.log("error", error)  
            if (error.data) {  
                if (error.data.code == 401) {  
                    // token 失效  
                    store.clearUserInfo();  
                    if (url.indexOf("getUserInfoByToken") < 0 && url.indexOf("oauth") < 0) {  
                        var dingAutoLogin = getApp().globalData.appConfig.dingAutoLogin  
                        if (dingAutoLogin) {  
                            uni.reLaunch({  
                                url: "/pages/tabbars/mine/mine"  
                            })  
                        } else {  
                            uni.navigateTo({  
                                url: "/pages/mine/login/login"  
                            });  
                        }  
                    }  
                }  
                return error.data  
            } else {  
                return error.errMsg  
            }  
        }  
        if (res) {  
            // console.log("res", res)  
            return res.data;  
        }  
    }).catch(err => {  
        uni.hideLoading();  
        console.log("request error", err)  
        return Promise.reject({  
            ...err  
        });  
    });  
}  

操作步骤:

打开项目->运行到钉钉小程序->选择真机运行

预期结果:

在statusCode不为200的时候,uni.request的返回结果里有data信息

实际结果:

在statusCode不为200的时候,uni.request的返回结果里没有data信息

bug描述:

我们做钉钉小程序是用的uni-app的框架,接口请求使用的是uni.request,在钉钉小程序模拟器上能正确返回错误的data信息,在真机上不可以。如下图所示。
图1(在钉钉小程序模拟器上打印出来的信息)

图2(钉钉小程序真机运行打印出的信息)

由图1和图2可以看出,返回的对象里少了data信息。这是为什么?

2020-12-18 12:44 负责人:无 分享
已邀请:

该问题目前已经被锁定, 无法添加新回复