uni-app运行鸿蒙app披荆斩棘后又遇问题:运行起来闪一下即关闭,报错window.on subWindowClose not supported

发布于 1周前 作者 gougou168 来自 Uni-App

uni-app运行鸿蒙app披荆斩棘后又遇问题:运行起来闪一下即关闭,报错window.on subWindowClose not supported
[广告] 18:39:43.500 uni一键登录,无需手动输入手机号,比短信验证码更便宜、更简单的用户注册/登录方案,详情
18:39:43.507 项目 app-harmony 开始编译
18:39:45.384 请注意运行模式下,因日志输出、sourcemap 以及未压缩源码等原因,性能和包体积,均不及发行模式。
18:39:45.385 正在编译中…
18:39:49.839 项目 app-harmony 编译成功。
18:39:49.881 ready in 5285ms.
18:39:50.236 安装鸿蒙工程的依赖 …
18:39:51.659 安装鸿蒙工程依赖成功
18:39:51.659 开始制作运行包 .hap,请耐心等待 …
18:40:18.602 运行包制作成功
18:40:18.602 安装 .hap 到鸿蒙设备 …
18:40:19.528 安装成功
18:40:19.529 在鸿蒙设备上启动运行 .hap …
18:40:20.657 运行成功
18:40:21.428 Callee constructor is OK string
18:40:21.428 Ability::constructor callee is object [object Object]
18:40:21.503 window.on subWindowClose not supported

图片

项目创建方式 版本号 开发环境
项目 app-harmony 未提供 未提供

更多关于uni-app运行鸿蒙app披荆斩棘后又遇问题:运行起来闪一下即关闭,报错window.on subWindowClose not supported的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

16 回复

不该这个事,这是个警告,你闪退的原因可能是使用到了不支持的 API

更多关于uni-app运行鸿蒙app披荆斩棘后又遇问题:运行起来闪一下即关闭,报错window.on subWindowClose not supported的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我这个是新建项目,并没有使用任何api

回复 2***@qq.com: 把整个项目打包发出来看一下

回复 DCloud_UNI_yuhe: 好的

回复 DCloud_UNI_yuhe: 压缩包在下面的评论

回复 DCloud_UNI_yuhe: 大哥诊断出问题了吗

回复 DCloud_UNI_yuhe: DevEco Studio倒是报错了说是什么JDK的问题都是新建的项目 Device info:emulator Build info:emulator 5.0.0.106(SP3DEVC00E106R4P11log) Fingerprint:570502eb50d2bc76434d11a9f8d174fdd111817e8b8408df6b685f3718110005 Module name:com.example.passion Version:1.0.0 VersionCode:1000000 PreInstalled:No Foreground:Yes Pid:13425 Uid:20020047 Reason:TypeError Error name:TypeError Error message:Cannot read property create of undefined Stacktrace: at Runtime (oh_modules/.ohpm/@dcloudio+uni-app-runtime@onjt5cnkmpxv8bm+y1oo6mnpqjw8oa6bpkmtp8h3hxs=/oh_modules/@dcloudio/uni-app-runtime/src/main/ets/uni-mp-sdk/sdk.js:318:1) at anonymous (oh_modules/.ohpm/@dcloudio+uni-app-runtime@onjt5cnkmpxv8bm+y1oo6mnpqjw8oa6bpkmtp8h3hxs=/oh_modules/@dcloudio/uni-app-runtime/src/main/ets/uni-mp-sdk/sdk.js:732:1) at emit (oh_modules/.ohpm/@dcloudio+uni-app-runtime@onjt5cnkmpxv8bm+y1oo6mnpqjw8oa6bpkmtp8h3hxs=/oh_modules/@dcloudio/uni-app-runtime/src/main/ets/uni-mp-sdk/sdk.js:61:1) at onControllerAttached (oh_modules/.ohpm/@dcloudio+uni-app-runtime@onjt5cnkmpxv8bm+y1oo6mnpqjw8oa6bpkmtp8h3hxs=/oh_modules/@dcloudio/uni-app-runtime/src/main/ets/uni-mp-sdk/sdk.js:1867:1)

这是项目压缩包

你这发的对吗?我看你发的里面没有 uni_modules,但是你在好几个地方都引用了 uni_modules 下的文件,我删除之后正常运行的

你是不是也是用 x86 设备,然后用模拟器运行,https://uniapp.dcloud.net.cn/tutorial/harmony/history.html

回复 DCloud_UNI_yuhe: 对没有鸿蒙系统的真机

回复 DCloud_UNI_yuhe: uni_modules npm install 就好了我压缩包没有加进去

回复 2***@qq.com: x86 设备不支持的

回复 DCloud_UNI_yuhe: 那我能不能用浏览器去调试开发先暂时不用鸿蒙的api,但是打包的时候用uniapp来打包鸿蒙app

我也遇到了这个问题,请问作者解决了吗

在处理 uni-app 在鸿蒙系统上的开发问题时,遇到 window.onSubWindowClose not supported 错误通常意味着你的代码试图调用一个在当前平台上不支持的 API。在鸿蒙系统上,由于 API 和环境差异,一些在 Web 或其他平台上常用的功能可能无法直接使用。

以下是一些可能的解决方案和代码调整示例,帮助你绕过这个问题:

1. 检查并移除不支持的 API 调用

首先,检查你的代码库,特别是任何与窗口管理或子窗口交互相关的部分。如果你找到了类似 window.onSubWindowClose 的调用,尝试移除或替换它们。

// 假设你有以下代码:
window.onSubWindowClose = function() {
    console.log('子窗口已关闭');
};

// 改为:
// 如果鸿蒙不支持,可以考虑使用其他方式处理窗口关闭事件,或者完全移除该监听
// 例如,如果你控制子窗口的打开,可以在关闭时直接调用一个函数
function closeSubWindowHandler() {
    console.log('处理子窗口关闭逻辑');
}

// 打开子窗口时(假设有一个打开子窗口的函数)
function openSubWindow() {
    // 打开子窗口逻辑
    // ...
    // 假设这里有一个方式可以注册关闭时的回调(伪代码)
    // subWindow.onClose(closeSubWindowHandler);
}

2. 条件编译

利用 uni-app 的条件编译功能,为不同平台编写不同的代码。

// #ifdef HMOS
// 鸿蒙系统特定代码
function handleWindowCloseForHMOS() {
    // 鸿蒙系统下处理窗口关闭的逻辑
    console.log('鸿蒙系统下处理窗口关闭');
}
// #else
// 其他平台代码
window.onSubWindowClose = function() {
    console.log('子窗口已关闭');
};
// #endif

3. 使用平台判断

在运行时检查平台,并根据平台执行不同的逻辑。

if (uni.getSystemInfoSync().platform === 'hmos') {
    // 鸿蒙系统下的处理逻辑
    function handleWindowCloseForHMOS() {
        console.log('鸿蒙系统下处理窗口关闭');
    }
} else {
    // 其他平台下的处理逻辑
    window.onSubWindowClose = function() {
        console.log('子窗口已关闭');
    };
}

结论

由于鸿蒙系统的特性和限制,处理这类兼容性问题通常需要具体问题具体分析。确保你的代码库中没有调用不支持的 API,并利用条件编译或运行时平台判断来适配不同平台。如果问题依旧存在,考虑查阅 uni-app 和鸿蒙系统的官方文档,或在开发者社区寻求更具体的帮助。

回到顶部