uni-app运行鸿蒙app披荆斩棘后又遇问题:运行起来闪一下即关闭,报错window.on subWindowClose not supported
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
不该这个事,这是个警告,你闪退的原因可能是使用到了不支持的 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 和鸿蒙系统的官方文档,或在开发者社区寻求更具体的帮助。