uni-app 上架被拒,jscrash异常,原因 WebViewBuilder.ets:17:3 报错

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

uni-app 上架被拒,jscrash异常,原因 WebViewBuilder.ets:17:3 报错

类别 信息
产品分类 uniapp/App
PC开发环境 Windows
PC开发环境版本 WIN11
HBuilderX类型 正式
HBuilderX版本 4.42
手机系统 HarmonyOS NEXT
手机系统版本 HarmonyOS NEXT Developer Beta1
手机厂商 华为
手机机型 matepad
页面类型 vue
vue版本 vue3
打包方式 云端
项目创建方式 HBuilderX

操作步骤:

jscrash异常,原因:Generated by HiviewDFX@OpenHarmony___at (oh_modules/.ohpm/@dcloudio+uni-app-runtime@onjt5cnkmpxv8bm+y1oo6mnpqjw8oa6bpkmtp8h3hxs=/oh_modules/@dcloudio/uni-app-runtime/src/main/ets/uni-mp-sdk/WebViewBuilder.ets:17:3)

预期结果:

jscrash异常,原因:Generated by HiviewDFX@OpenHarmony___at (oh_modules/.ohpm/@dcloudio+uni-app-runtime@onjt5cnkmpxv8bm+y1oo6mnpqjw8oa6bpkmtp8h3hxs=/oh_modules/@dcloudio/uni-app-runtime/src/main/ets/uni-mp-sdk/WebViewBuilder.ets:17:3)

实际结果:

jscrash异常,原因:Generated by HiviewDFX@OpenHarmony___at (oh_modules/.ohpm/@dcloudio+uni-app-runtime@onjt5cnkmpxv8bm+y1oo6mnpqjw8oa6bpkmtp8h3hxs=/oh_modules/@dcloudio/uni-app-runtime/src/main/ets/uni-mp-sdk/WebViewBuilder.ets:17:3)

bug描述:

jscrash异常,原因:Generated by HiviewDFX@OpenHarmony___at (oh_modules/.ohpm/@dcloudio+uni-app-runtime@onjt5cnkmpxv8bm+y1oo6mnpqjw8oa6bpkmtp8h3hxs=/oh_modules/@dcloudio/uni-app-runtime/src/main/ets/uni-mp-sdk/WebViewBuilder.ets:17:3) 上架被拒了,有处理办法么?


8 回复

找到文件,手动加try没用,编译打包就恢复了


还有问题吗?能够提供一下一个可以复现的项目吗?

4.42.2024121808-alpha 有一条:App-Harmony平台 修复 web-view 组件报错The type of “permissionList” must be Array<string>的 Bug。 我用了alpha版本后,发现webSocket无法连接了。 回4.36.2024112817版本,正常连接。 纳闷了。

我现在上架被拒的原因就是The type of “permissionList” must be Array<string>的 Bug

回复 2***@qq.com: 你更新一下最新的 alpha ,注意,要检查一下 oh-package,看一下是否真的更新,如果还是存在 oh-package,可能还是会引入之前的版本

没办法提供项目, 已经在问华为那边了,如果能定位位置,我也好处理,他们就给了一个模糊的代码异常,问题这个代码还是自动生成的。

回复
Reason:Error Error name:Error Error message:Parameter Error. The type of “permissionList” must be Array<string>. Error code: Stacktrace: Cannot get SourceMap info, dump raw stack: at anonymous (entry|@dcloudio/uni-mp-sdk|1.0.0|components/WebView.ts:109:1) at (oh_modules/.ohpm/@dcloudio+uni-app-runtime@onjt5cnkmpxv8bm+y1oo6mnpqjw8oa6bpkmtp8h3hxs=/oh_modules/@dcloudio/uni-app-runtime/src/main/ets/uni-mp-sdk/WebViewBuilder.ets:17:3)

针对您提到的uni-app上架被拒,且报错信息指向WebViewBuilder.ets:17:3jscrash异常问题,这通常与WebView中的JavaScript执行出错相关。虽然具体的错误原因需要详细的错误日志来确定,但我可以提供一个基本的代码审查和调整思路,以及一个可能的代码修正案例。

代码审查与调整思路

  1. 检查WebView加载的URL或内容: 确保WebView加载的页面或内容是有效的,没有语法错误。如果内容是通过JavaScript动态生成的,确保生成逻辑无误。

  2. 错误捕获与日志: 在JavaScript代码中添加try-catch块,捕获并处理可能的异常,同时记录详细的错误信息到日志中,以便后续分析。

  3. 资源加载: 检查所有在WebView中引用的资源(如图片、脚本、样式表等)是否都能正确加载,没有404或网络错误。

  4. 第三方库与插件: 如果使用了第三方JavaScript库或插件,确保它们是最新的、兼容的版本,并且没有已知的错误。

可能的代码修正案例

假设您的WebViewBuilder.ets文件中涉及到了JavaScript代码的注入或执行,以下是一个简化的示例,展示如何添加错误处理:

// 假设这是您的 WebViewBuilder.ets 文件中的相关代码片段
export default class WebViewBuilder {
    loadContent(content) {
        try {
            // 假设这里是通过某种方式执行JavaScript内容
            eval(content); // 注意:eval函数有安全风险,实际开发中应避免使用,这里仅作示例
        } catch (error) {
            console.error('JavaScript execution error:', error);
            // 可以考虑将错误信息上报到服务器或记录到本地日志
            // reportErrorToServer(error);
            // logErrorToLocalStorage(error);
        }
    }
}

// 使用示例
const webViewBuilder = new WebViewBuilder();
const content = `
    // 您的JavaScript内容
    function test() {
        console.log('This is a test function.');
        throw new Error('Simulated error for demonstration.'); // 模拟一个错误
    }
    test();
`;
webViewBuilder.loadContent(content);

结论

由于您提供的错误信息有限,上述代码仅作为一种可能的解决方案示例。实际开发中,应详细检查引发异常的JavaScript代码段,并结合具体的错误日志进行深入分析。如果问题依旧无法解决,建议向uni-app社区或相关开发者论坛求助,提供完整的错误日志和相关代码,以便获得更具体的帮助。

回到顶部