uni-app H5端navigateBack不传delta报错

uni-app H5端navigateBack不传delta报错

示例代码:

uni.navigateBack();


## 操作步骤:

跳转二级页触发uni.navigateBack();

## 预期结果:

能够返回上一页

## 实际结果:

报错

## bug描述:

[https://uniapp.dcloud.net.cn/api/router.html#navigateback](https://uniapp.dcloud.net.cn/api/router.html#navigateback)

![](https://im-storage.dcloud.net.cn/public/176424392213740cc5350-502a-11eb-9f17-a5e0aad1cac1.)

| 信息             | 值                     |
|------------------|------------------------|
| 产品分类         | uniapp/H5              |
| PC开发环境操作系统 | Windows                |
| PC开发环境操作系统版本号 | window10 专业版        |
| HBuilderX类型    | 正式                   |
| HBuilderX版本号  | 4.85                   |
| 浏览器平台       | Edge                   |
| 浏览器版本       | 版本 142.0.3595.94 (正式版本) (64 位) |
| 项目创建方式     | HBuilderX              |

更多关于uni-app H5端navigateBack不传delta报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

发个可复现demo吧

更多关于uni-app H5端navigateBack不传delta报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html


应该不是uni这边的问题,看报错源头是一个依赖重写了

在uni-app H5端调用uni.navigateBack()时,如果当前页面栈中只有一个页面,执行返回操作会导致报错。这是因为navigateBack默认的delta值为1,当页面栈深度不足时会触发路由错误。

解决方案:

  1. 检查页面栈深度: 在执行navigateBack前,可通过getCurrentPages()获取当前页面栈长度,判断是否可返回:

    const pages = getCurrentPages();
    if (pages.length > 1) {
      uni.navigateBack();
    } else {
      // 可选:关闭页面或跳转首页
      history.back(); // H5端原生回退
    }
    
  2. 指定delta值: 明确传入delta参数,避免依赖默认值:

    uni.navigateBack({ delta: 1 });
    
  3. 异常捕获: 使用try-catch包裹代码,增强容错性:

    try {
      uni.navigateBack();
    } catch (e) {
      console.warn('返回失败:', e);
    }
回到顶部