uni-app鸿蒙上架提示jscrash异常

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

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

4 回复

你的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和鸿蒙系统更新的关注,以便及时获取最新的兼容性和性能改进信息。

回到顶部