HarmonyOS 鸿蒙Next在Ability中直接加载Har模块中的Page报错401

发布于 1周前 作者 ionicwang 来自 鸿蒙OS

HarmonyOS 鸿蒙Next在Ability中直接加载Har模块中的Page报错401
<markdown _ngcontent-aal-c237="" class="markdownPreContainer">

在entry模块中有一个Ability,其中会使用windowStage.loadContent来加载一个首页Page。 而在我的工程里,我希望能够加载另一个har的module里写好的Page,于是我采用了命名路由的方式,但是打开页面提示401。应该如何排查解决?

关键代码如下: entry module中:

XXXAblility.ets

import('[@abc](/user/abc)/engine/src/main/ets/engine/pages/TestPage');

windowStage.loadContentByName(‘TestPageName’, (err) => { if (err.code) { hilog.error(0x0000, this.LogTag, ‘Failed to load the content. Cause: %{public}s’, JSON.stringify(err) ?? ‘’); return; } hilog.info(0x0000, this.LogTag, ‘Succeeded in loading the content.’); }); <button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 4px; right: 8px; font-size: 14px;">复制</button>

BBB module中定义TestPage.ets,代码如下:

[@Entry](/user/Entry)({ routeName: 'TestPageName' })
[@Component](/user/Component)
export struct TestPage {
...
}
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 4px; right: 8px; font-size: 14px;">复制</button>

应用启动时,页面空白,日志中看到报错 {"code":401} ,错误描述是window load content fail。但是不知道错在哪里。上面的写法主要是参考了命名路由的文档

</markdown>
5 回复

我文中写的就是loadContentByName呢

希望HarmonyOS能继续优化系统稳定性,减少崩溃和重启的情况。

尝试:
1. 我把这个TestPage移动到了entry module内,相对路径导入,依然报错,错误相同401。

2. 在entry的module.json5中配置了pages的json文件,声明了这个TestPage,可以打开了。

所以:

这个401错误就是说必须要在pages配置文件声明。

那么问题来了:

1. 页面必须要静态配置在entry的pages配置文件里吗?

2. 退一步,我可以静态配置,那么,我在entry的pages配置文件里怎么配置另一个module里的page呢?因为HAR模块中无法声明pages。

在HarmonyOS鸿蒙Next系统中,若在Ability中直接加载Har模块中的Page时遇到401错误,这通常指示权限或认证问题。401错误是HTTP协议中的标准响应状态码,表示“未授权”,即请求者没有提供必要的认证信息或认证信息无效。

针对此问题,首先确保以下几点:

  1. 权限配置:检查Har模块及其包含的Page是否已在config.json中正确声明并赋予了必要的权限。同时,确认Ability是否有权限加载该Har模块。

  2. 认证机制:如果Har模块或其中的资源受保护,确保提供了正确的认证信息,如token、用户名和密码等。

  3. 模块路径:确认Har模块的路径是否正确,以及该模块是否已被正确安装和注册到系统中。

  4. 版本兼容性:检查HarmonyOS版本与Har模块的兼容性,确保没有因版本不匹配导致的问题。

  5. 日志分析:查看系统日志和应用程序日志,获取更详细的错误信息,有助于定位问题。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部