uni-app鸿蒙上架提示jscrash异常
uni-app鸿蒙上架提示jscrash异常
问题描述
HBuildeX 4.29下开发, mate60下测试.
上架鸿蒙市场时, 审核人员给的信息:
- jscrash异常,原因:Generated by HiviewDFX@OpenHarmony___at (entry/src/main/ets/uni-app/WebViewBuilder.ets:42:3)
- 华为给的日志:
- Device info: HUAWEI Mate 60
- PreInstalled: No
- Foreground: Yes
- Pid: 15903
- Uid: 20020014
- Reason: TypeError
- Error name: TypeError
- Error message: Cannot read property getStyle of undefined
- Stacktrace:
Cannot get SourceMap info, dump raw stack: at anonymous (entry|entry|1.0.0|src/main/resources/rawfile/uni-app/uni-app-harmony-framework-dev.js:21369:1) at anonymous (entry|entry|1.0.0|src/main/ets/uni-app/components/WebView.ts:100:1) at (entry/src/main/ets/uni-app/WebViewBuilder.ets:10:5) at (entry/src/main/ets/uni-app/WebViewBuilder.ets:42:3)
查到 uni-app-harmony-framework-dev.js:21369
的地方, 发现是 getLocation
的地方 (即 latitude: res.latitude,
这一行):
function subscribeGetLocation() {
registerServiceMethod(API_GET_LOCATION, (args, resolve2) => {
getLocation({
type: args.type,
altitude: args.altitude,
highAccuracyExpireTime: args.highAccuracyExpireTime,
isHighAccuracy: args.isHighAccuracy,
success(res) {
resolve2({
latitude: res.latitude,
longitude: res.longitude,
speed: res.speed,
accuracy: res.accuracy,
altitude: res.altitude,
verticalAccuracy: res.verticalAccuracy,
horizontalAccuracy: res.horizontalAccuracy
});
}
});
});
}
关键是我的APP没有涉及到定位, 没申请定位权限.
着急上架, 大神帮忙看下.
开发环境与版本信息
项目创建方式 | 开发环境 | 版本号 |
---|---|---|
未明确说明 | HBuildeX | 4.29 |
测试设备 | Mate 60 |
更多关于uni-app鸿蒙上架提示jscrash异常的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
你的web-view内加载的页面使用到了定位,间接的调用到了原生的定位。建议使用更新的HBuilderX发行你的项目
更多关于uni-app鸿蒙上架提示jscrash异常的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
新版解决了这个问题吗? 新版本无法在window下开启模拟器
在处理uni-app应用在鸿蒙系统上架时遇到的jscrash
异常时,通常这类异常与JavaScript运行时错误相关。这类错误可能由多种原因引起,包括但不限于代码中的逻辑错误、第三方库的兼容性问题、资源加载失败等。为了有效地定位和修复这些问题,以下是一些代码级别的排查和修复方法,你可以根据具体情况进行调整和应用。
1. 错误捕获和日志记录
首先,确保你的应用中加入了全面的错误捕获机制,这有助于记录和分析异常信息。
// 在App.vue的onLaunch或main.js中全局捕获异常
window.onerror = function(message, source, lineno, colno, error) {
console.error('Global Error:', message, source, lineno, colno, error);
// 可将错误信息发送到服务器或记录到本地日志
uni.setStorageSync('errorLog', {message, source, lineno, colno, error: error.stack || error});
};
2. 特定组件或功能的错误处理
对于可能抛出异常的特定组件或功能,使用try-catch语句进行局部捕获。
try {
// 可能会抛出异常的代码
someRiskyFunction();
} catch (error) {
console.error('Caught Error in someRiskyFunction:', error);
// 错误处理逻辑,如显示错误提示、回退到安全状态等
}
3. 检查第三方库
如果使用了第三方库,确保它们兼容鸿蒙系统。查看库的文档或社区,看是否有已知的问题和修复方法。
4. 资源加载检查
确保所有必要的资源(如图片、字体、配置文件等)都已正确加载,且路径无误。
uni.getImageInfo({
src: 'path/to/image.png',
success: function(res) {
console.log('Image loaded successfully');
},
fail: function(err) {
console.error('Failed to load image:', err);
}
});
5. 使用鸿蒙特定的API或调整
查看uni-app和鸿蒙系统的官方文档,了解是否有特定的API或配置需要调整以适应鸿蒙环境。
6. 持续集成和自动化测试
建立持续集成流程,通过自动化测试(如单元测试、集成测试)提前发现并修复潜在问题。
总结
jscrash
异常通常指向JavaScript层面的错误,通过上述方法,你可以更系统地排查和修复这些问题。记得在每次修改后充分测试,确保问题已被有效解决。同时,保持对uni-app和鸿蒙系统更新的关注,以便及时获取最新的兼容性和性能改进信息。