uni-app errMsg navigateTo fail /pages/setting/setting locked
uni-app errMsg navigateTo fail /pages/setting/setting locked
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | win11 | HBuilderX |
示例代码:
```md
<u-button text="订单详情" icon="order" iconColor="#fff" class="custom-style" [@click](/user/click)="pushPage('/pages/product/product')"></u-button>
<u-button text="需求订单" icon="order" iconColor="#fff" class="custom-style" [@click](/user/click)="pushPage('/pages/requirement-order/requirement-order')"></u-button>
<u-button text="商品管理" icon="list-dot" iconColor="#fff" class="custom-style" [@click](/user/click)="pushPage('/pages/goods/goods')"></u-button>
<u-button text="商品分类" [@click](/user/click)="pushPage('/pages/goods_class/goods_class')" icon="calendar-fill" iconColor="#fff" class="custom-style"></u-button>
<u-button text="价格表管理" v-if="level == 1" icon="rmb" iconColor="#fff" class="custom-style" [@click](/user/click)="pushPage('/pages/price-list/price-list')"></u-button>
<u-button text="供应商管理" icon="home-fill" iconColor="#fff" class="custom-style" [@click](/user/click)="pushPage('/pages/company/company')"></u-button>
<u-button text="设置" icon="setting-fill" iconColor="#fff" class="custom-style" [@click](/user/click)="pushPage('/pages/setup/setup')"></u-button>
<u-button text="系统信息" icon="setting-fill" iconColor="#fff" class="custom-style" [@click](/user/click)="pushPage('/pages/setting/setting')"></u-button>
<u-button text="用户管理" v-if="level == 1" icon="man-add-fill" iconColor="#fff" class="custom-style" [@click](/user/click)="pushPage('/pages/user/user')"></u-button>
<u-button text="统计" icon="grid-fill" iconColor="#fff" class="custom-style" [@click](/user/click)="pushPage('/pages/statistic/statistic')"></u-button>
pushPage(url){
if(this.pagesCount >= 10){
// 使用重定向跳转页面
uni.redirectTo({
url,
fail:(err)=>{
uni.showModal({
title:'路由跳转-redirectTo',
content:JSON.stringify(err)
})
}
})
}else{
// 如果页面栈总数小于10,则打开新页面
uni.navigateTo({
url,
fail:(err)=>{
uni.showModal({
title:'路由跳转-navigateTo',
content:JSON.stringify(err)
})
}
})
}
}
操作步骤:
每次点击进页面返回, 反反复复十几次或者几次就会出现这样的错误
预期结果:
能正常跳转,
实际结果:
卡死不动。
bug描述:
测试每次点击进页面返回, 反反复复几次就会报这样的错误,
{
errMsg: navigateTo:fail /pages/setting/setting locked
}
然后整个APP就全部都点不动了也不跳转.
更多关于uni-app errMsg navigateTo fail /pages/setting/setting locked的实战教程也可以访问 https://www.itying.com/category-93-b0.html
换个设备测试,能复现吗?
更多关于uni-app errMsg navigateTo fail /pages/setting/setting locked的实战教程也可以访问 https://www.itying.com/category-93-b0.html
换了好几台设备了, 都可以复现, 我们的设备就是工业屏幕的那种
怎么解决?有没有重置的方法, 这个问题困扰一周了已经
回复 2***@qq.com: 都是工业设备?普通安卓手机能重现不?
回复 DCloud_CHB: 手机测试的正常
回复 DCloud_CHB: <navigator url="/pages/product/product" hover-class="navigator-hover"> <u-button text="订单详情" icon="order" iconColor="#fff" class="custom-style"></u-button> </navigator> 使用标签也不行,刚测试过
回复 DCloud_CHB: 能加个QQ不, 录屏你看一下
回复 2***@qq.com: 手机正常,pda设备异常的话,应该是这类pda特殊系统导致的,我们这边也不好测试。
回复 DCloud_CHB: https://www.sztouchtec.com/cp/list15/92.html 像这种设备也不算是pda设备吧
这是一个典型的页面栈溢出问题。在uni-app中,页面栈最多只能容纳10个页面,当超过这个限制时,路由跳转就会失败。
从你的代码分析,问题出现在:
- 页面栈管理不当:每次点击都使用
navigateTo跳转,但没有相应的页面销毁机制 - 重复跳转检测缺失:没有检查当前页面是否已经在页面栈中
- 页面生命周期管理:返回操作可能没有正确释放页面资源
解决方案:
- 优化路由跳转逻辑:
pushPage(url) {
// 检查页面栈深度
const pages = getCurrentPages()
if (pages.length >= 10) {
// 使用重定向替代跳转
uni.redirectTo({
url,
fail: (err) => {
console.error('redirectTo失败:', err)
}
})
} else {
// 避免重复跳转同一页面
const currentPage = pages[pages.length - 1]
if (currentPage.route !== url.replace(/^\//, '')) {
uni.navigateTo({
url,
fail: (err) => {
console.error('navigateTo失败:', err)
}
})
}
}
}
- 在页面onUnload中释放资源:
onUnload() {
// 清理定时器、事件监听等
}

