HarmonyOS鸿蒙Next中配置了系统路由表,跳转却依然白屏是什么情况

HarmonyOS鸿蒙Next中配置了系统路由表,跳转却依然白屏是什么情况 官方的路由表配置文档:

我现在有个audit模块(har类型),明明按照官方文档进行路由配置,一些页面入口函数也加了,名称也都没问题,如下:

路由栈、Navigation、NavDestination等也都写了,反正就是按官方文档的步骤一步步写的,但跳转时却是白屏,如下:

错误日志:

不知这是怎么一回事,而且我另一个模块也是一模一样的写却成功了,有哪位大神可以不吝才华来回答一下,感激不尽。


更多关于HarmonyOS鸿蒙Next中配置了系统路由表,跳转却依然白屏是什么情况的实战教程也可以访问 https://www.itying.com/category-93-b0.html

11 回复

【背景知识】

  • 组件导航(Navigation):主要用于实现Navigation页面(NavDestination)间的跳转,支持在不同Navigation页面间传递参数,提供灵活的跳转栈操作,从而更便捷地实现对不同页面的访问和复用。
  • 系统路由表:系统路由表是动态路由的一种实现方式。从API version 12开始,Navigation支持使用系统路由表的方式进行动态路由。
  • routerMap标签:标识模块配置的路由表的路径。可在resources/base/profile下面定义配置文件,文件名可以自定义,例如:router_map.json。

【问题定位】

  1. 检查resources/base/profile路径中是否创建了系统路由表配置文件。
  2. 在Navigation页面实现跳转的push路由栈的函数,检查入参的NavDestination(目标页面)的名称name在系统路由表配置文件是否有定义。
  3. 检查配置文件module.json5是否配置了routerMap标签,关联了系统路由表配置文件。

【修改建议】

  1. 在工程resources/base/profile中创建创建路由表配置文件,名称可自定义,例如route_map.json。
  2. 在系统路由表配置文件中添加定义目标页面的路由信息,注意目标页面名称name与push路由栈函数的页面名称要对应,而不是目标页面的源代码文件名称对应,目标页面的源代码文件路径填写在pageSourceFile字段。
  3. 在配置文件module.json5添加routerMap标签,关联系统路由表配置文件route_map.json。

更多关于HarmonyOS鸿蒙Next中配置了系统路由表,跳转却依然白屏是什么情况的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


问题解决了:当我配置路由表的时候,编译器没有将此模块的路由表添加到入口模块的loader-router-map.json文件里,导致运行时系统找不到对应的页面,然后我在loader-router-map.json里添加页面信息后,就可以实现正常跳转了,如下图:

不知道这是不是DevEcoStudio的问题,有时我只需配置目标模块的路由表,编译器就会自动添加页面信息至loader-router-map.json;但有时候我明明一模一样的操作,编译器却没有添加,导致系统找不到页面,还需要我手动配置loader-router-map.json

感觉可以转给IDE的小伙伴们确认一下问题,

NavDestination() {
      }
      .title('PageOne')
      .onReady((context: NavDestinationContext) => {
         this.pathStack = context.pathStack;
      })

NavDestination中
.onReady部分必须要有

从你错误信息看,can’t find name in config file: AuditDetailPage

仔细检查一下你的路由表中关于 AuditDetailPage 这个页面

cke_128.png

这个模块,这个页面,仔细检查

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17

建议直接用@hadss/hmrouter

报错直观来看, 就是没有找到分包中定义的.  AuditDetailPage.

**配置检查: **

  1. 确保分包中的AuditDetailPage 页面使用 NavDestination 包裹.

依赖管理调整:

  1. *** 尝试跳转模块依赖 分包模块. 在主模块, 跳转模块的package.json 中依赖需要跳转的模块.  这样如果配置正确, 怎么也应该找到了.
  2. 如果步骤1生效, 则跳转修改为使用 NavPushPathHelper, 进行跳转. 去掉模块的直接依赖. 详细参考: https://developer.huawei.com/consumer/cn/doc/atomic-guides/atomic-inter-module-page-routing

ps: 如果跨模块如果不直接依赖跳转要使用NavPushPathHelper, 同一个模块使用NavPathStack 就可以了.

在HarmonyOS Next中配置系统路由表后仍出现白屏,通常由以下原因导致:

  1. 路由路径未正确注册或路径拼写错误;
  2. 目标页面组件未导出或生命周期异常;
  3. 页面资源加载失败或渲染超时;
  4. 系统路由表与页面栈管理存在冲突。

检查路由配置的路径与目标页面的声明是否一致,并确认页面组件已正确定义及初始化。

白屏问题通常由路由配置或页面组件加载异常导致。根据错误日志中的TypeError: Cannot read property 'xxx' of undefined,建议检查以下几点:

  1. 页面组件导出问题:确认AuditList页面是否正确定义并导出,确保在路由配置中引用的路径和组件名称完全匹配,包括大小写。

  2. HAR模块依赖:如果是HAR模块,检查模块是否被正确引入到主工程中,依赖配置(如oh-package.json5)是否完整,避免运行时找不到组件。

  3. 生命周期或状态初始化:页面组件的aboutToAppearonPageShow中是否有未处理的异步操作或未初始化的变量?空值可能导致渲染失败。

  4. 路由堆栈管理:确认Navigation的push操作参数是否正确,例如params若传递了未定义的对象,可能引发类型错误。

建议逐行核对路由配置与页面代码,或尝试简化页面内容以隔离问题。

回到顶部