调试基础库大于 2.29.2 都会出现

- 发布:2024-08-12 12:38
- 更新:2024-08-23 13:18
- 阅读:383
【报Bug】内部addInterceptor returnValue报错TypeError: Cannot read property '0' of undefined
产品分类: uniapp/小程序/微信
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: win11
HBuilderX类型: 正式
HBuilderX版本号: 4.24
第三方开发者工具版本号: 1.06.2301040
基础库版本号: 3.5.3
项目创建方式: HBuilderX
操作步骤:
预期结果:
调试基础库大于 2.29.2 都会出现
调试基础库大于 2.29.2 都会出现
实际结果:
Promise {<pending>}catch: (...)constructor: (...)finally: (...)hasOwnProperty: (...)isPrototypeOf: (...)propertyIsEnumerable: (...)then: (...)toLocaleString: (...)toString: (...)valueOf: (...)Symbol(Symbol.toStringTag): (...)defineGetter: (...)defineSetter: (...)lookupGetter: (...)lookupSetter: (...)proto: Object[[PromiseState]]: "fulfilled"[[PromiseResult]]: undefined
Promise {<pending>}catch: (...)constructor: (...)finally: (...)hasOwnProperty: (...)isPrototypeOf: (...)propertyIsEnumerable: (...)then: (...)toLocaleString: (...)toString: (...)valueOf: (...)Symbol(Symbol.toStringTag): (...)defineGetter: (...)defineSetter: (...)lookupGetter: (...)lookupSetter: (...)proto: Object[[PromiseState]]: "fulfilled"[[PromiseResult]]: undefined

你好,可以临时兼容修复一下,这个后面版本优化,
临时修复方式 将uni.promisify.adaptor.js 里面的res做一个判断
uni.addInterceptor({
returnValue (res) {
if (!(!!res && (typeof res === "object" || typeof res === "function") && typeof res.then === "function")) {
return res;
}
return new Promise((resolve, reject) => {
res.then((res) => res[0] ? reject(res[0]) : resolve(res[1]));
});
},
});
// 替换为
uni.addInterceptor({
returnValue (res) {
if (!(!!res && (typeof res === "object" || typeof res === "function") && typeof res.then === "function")) {
return res;
}
return new Promise((resolve, reject) => {
res.then((res) => {
if (!res) return resolve()
return res[0] ? reject(res[0]) : resolve(res[1])
});
});
},
});
h***@163.com (作者)
demo已经提交,管理员可见
2024-08-12 16:53