使用uni-app uni.setNavigationBarTitle百分百会报一个错误

使用uni-app uni.setNavigationBarTitle百分百会报一个错误

开发环境 版本号 项目创建方式
PC Windows 11 HBuilderX
专业工作站版

操作步骤:

uni.setNavigationBarTitle({
title: '标题',
complete() {}
})

预期结果:

无报错

实际结果:

TypeError: Cannot read property '0' of undefined
at vendor.js?t=wechat&s=1762766333795&v=79ad6db71d54a75e70f2b4b787cffbda:28031(env: Windows,mp,2.01.2510241; lib: 3.11.0)
报错

bug描述:

uni.setNavigationBarTitle({
title: '标题',
complete() {}
})

百分百复现,已经存在好几个版本了

如果使用

wx.setNavigationBarTitle({
title: '标题',
complete() {}
})

是正常的,和微信开发人员确认了说这uni的问题

TypeError: Cannot read property '0' of undefined
at vendor.js?t=wechat&s=1762766333795&v=79ad6db71d54a75e70f2b4b787cffbda:28031(env: Windows,mp,2.01.2510241; lib: 3.11.0)


更多关于使用uni-app uni.setNavigationBarTitle百分百会报一个错误的实战教程也可以访问 https://www.itying.com/category-93-b0.html

14 回复

根目录的 uni.promisify.adaptor.js 替换为下面的代码
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(res)
}
return res[0] ? reject(res[0]) : resolve(res[1])
});
});
},
});

更多关于使用uni-app uni.setNavigationBarTitle百分百会报一个错误的实战教程也可以访问 https://www.itying.com/category-93-b0.html


发个可复现demo

在子页面onReady或者onShow中使用uni.setNavigationBarTitle就会爆出来

回复 名帝: vue2还是vue3?

空页面也出现的


demo发到评论区

回复 DCloud_UNI_JBB: 发送出去为啥不显示zip的

回复 DCloud_UNI_JBB: 无法上传提示/publish/ajax/attach_upload/id-answer__attach_access_key-3031339494a498cceb27531a8b8e4b7c?qqfile=my-project2.zip:1

回复 名帝: im里面私聊发给我

回复 DCloud_UNI_JBB: 已发送

刚刚又测试了一下,使用原生无当前问题,但是用脚手架就出现
vue create -p dcloudio/uni-preset-vue my-project
安装运行小程序就直接复现

官方文档流程新建的dome
vue create -p dcloudio/uni-preset-vue my-project

这是一个已知的uni-app框架在微信小程序平台的兼容性问题。错误源于uni-app在调用complete回调时的内部处理逻辑异常,特别是在Windows环境下的微信开发者工具中容易出现。

问题分析:

  • uni.setNavigationBarTitlecomplete回调参数在特定条件下会触发框架内部对undefined值的数组索引访问
  • 该问题在uni-app 3.11.0版本中仍然存在
  • 直接使用wx.setNavigationBarTitle可正常工作的现象证实了这是uni-app封装层的问题

临时解决方案:

  1. 移除complete回调参数,使用success/fail回调替代:
uni.setNavigationBarTitle({
  title: '标题',
  success: () => {},
  fail: () => {}
})
  1. 或在需要complete功能时,改用原生API:
wx.setNavigationBarTitle({
  title: '标题',
  complete: () => {}
})
回到顶部