宝哥哥会飞
宝哥哥会飞
  • 发布:2026-04-07 15:57
  • 更新:2026-04-07 16:10
  • 阅读:15

【报Bug】ni.navigateBack当delta大于1

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: 14.2.1

HBuilderX类型: 正式

HBuilderX版本号: 4.87

手机系统: Android

手机系统版本号: Android 13

手机厂商: 华为

手机机型: 普通平板

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

比如ni.navigateBack当delta大于1 我全局有10个页面都有一个这样的方法,当突然某一个ni.navigateBack当delta大于1方法执行失败,所有页面的ni.navigateBack当delta大于1方法都会失败。

预期结果:

正常返回

实际结果:

比如ni.navigateBack当delta大于1 我全局有10个页面都有一个这样的方法,当突然某一个ni.navigateBack当delta大于1方法执行失败,所有页面的ni.navigateBack当delta大于1方法都会失败。

bug描述:

比如ni.navigateBack当delta大于1 我全局有10个页面都有一个这样的方法,当突然某一个ni.navigateBack当delta大于1方法执行失败,所有页面的ni.navigateBack当delta大于1方法都会失败。

2026-04-07 15:57 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

作为DCloud官方人员,对该bug反馈评审如下:

评审结论:该bug反馈信息不完整,无法有效复现和定位问题,需要补充关键信息。

一、内容完整性分析

1. 标题与描述问题

  • 标题中"ni.navigateBack"疑似笔误,应为"uni.navigateBack"
  • 问题描述过于模糊,仅重复"执行失败"的现象,未说明失败的具体表现(是报错?无响应?页面白屏?还是返回层级错误?)

2. 代码示例缺失

  • 未提供任何可运行的代码示例,无法判断页面栈管理逻辑、调用时机或参数设置是否正确
  • 建议补充:页面跳转链路的代码(如A→B→C→D的跳转方式)、navigateBack调用时的页面栈状态打印(getCurrentPages()

3. 复现步骤不清晰

  • 当前描述仅为现象复述,缺少具体操作流程(如:从哪个页面跳转到哪个页面?使用navigateTo还是redirectTo?在何种生命周期中调用?)
  • "全局10个页面都有这个方法"表述易引起误解:uni.navigateBack是全局API,非页面实例方法,需确认是指"10个页面都调用了该API"还是"封装了统一返回方法"

4. 关键信息缺失

  • 未提供失败时的错误日志(console报错信息、fail回调返回内容)
  • 未说明"所有页面方法都失败"的具体表现:是后续调用无响应?还是直接报错?亦或是返回层级异常?
  • 未确认是否使用了自定义导航栏、拦截器或路由封装库(如uni-simple-router等)

二、技术合理性分析

根据知识库文档,uni.navigateBack 的delta参数说明为:"返回的页面数,如果 delta 大于现有页面数,则返回到首页"。

可能的问题方向:

  1. 页面栈管理异常:若中间某页面使用了redirectToreLaunch,会导致页面栈断裂,此时delta计算基准发生变化
  2. 回调处理不当:未正确处理fail回调,导致错误状态被全局缓存
  3. 版本问题:当前使用HBuilderX 4.87(正式版),而最新正式版为5.04,建议先升级验证

三、改进建议

请补充以下信息以便进一步排查:

  1. 提供最小复现工程:包含3-4个页面的简单demo,展示从页面A→B→C→D的跳转,以及在某个页面调用uni.navigateBack({delta: 2})失败的具体代码

  2. 补充调试信息

    // 在调用前打印页面栈  
    console.log('当前页面栈:', getCurrentPages().map(p => p.route));  
    uni.navigateBack({  
     delta: 2,  
     success: (res) => console.log('success', res),  
     fail: (err) => console.log('fail', err) // 关键:提供报错详情  
    });  

    本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

  3. 确认使用场景:是否使用了nvue页面?是否配置了页面拦截器?是否在tabBar页面中调用了该方法(tabBar页面不支持navigateBack返回)?

  4. 建议升级:先将HBuilderX升级至5.04正式版,确认问题是否仍然存在

当前判定:该反馈暂不符合有效bug报告标准,标记为"需补充信息"。如能提供上述细节,可重新打开评估。

内容为 AI 生成,仅供参考
宝哥哥会飞

宝哥哥会飞 (作者)

我发现了 如果在项目里面访问网页,该网页内部进行了多次跳转,再由app执行uni.navigateBack({
delta: 99,
fail: (res) => {
console.log("????",res)
}
}),会产生一次页面回退效果,然后再执行就会报错了,TypeError: Cannot read property 'preload' of null,感觉项目的页面堆栈已经混乱了。

要回复问题请先登录注册