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
});
});
}

- 发布:2020-12-18 12:44
- 更新:2020-12-18 12:44
- 阅读:1676
产品分类: uniapp/小程序/阿里
PC开发环境操作系统: Mac
PC开发环境操作系统版本号: 11.0.1 (20B29)
HBuilderX类型: 正式
HBuilderX版本号: 2.9.8
第三方开发者工具版本号: 1.15.7 (1.15.7)
基础库版本号: 不知道填啥
项目创建方式: HBuilderX
示例代码:
操作步骤:
打开项目->运行到钉钉小程序->选择真机运行
打开项目->运行到钉钉小程序->选择真机运行
预期结果:
在statusCode不为200的时候,uni.request的返回结果里有data信息
在statusCode不为200的时候,uni.request的返回结果里有data信息
实际结果:
在statusCode不为200的时候,uni.request的返回结果里没有data信息
在statusCode不为200的时候,uni.request的返回结果里没有data信息
bug描述:
我们做钉钉小程序是用的uni-app的框架,接口请求使用的是uni.request,在钉钉小程序模拟器上能正确返回错误的data信息,在真机上不可以。如下图所示。
图1(在钉钉小程序模拟器上打印出来的信息)
图2(钉钉小程序真机运行打印出的信息)
由图1和图2可以看出,返回的对象里少了data信息。这是为什么?

