uni-app 上架被拒,jscrash异常,原因 WebViewBuilder.ets:17:3 报错
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) 上架被拒了,有处理办法么?
找到文件,手动加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:3
的jscrash
异常问题,这通常与WebView中的JavaScript执行出错相关。虽然具体的错误原因需要详细的错误日志来确定,但我可以提供一个基本的代码审查和调整思路,以及一个可能的代码修正案例。
代码审查与调整思路
-
检查WebView加载的URL或内容: 确保WebView加载的页面或内容是有效的,没有语法错误。如果内容是通过JavaScript动态生成的,确保生成逻辑无误。
-
错误捕获与日志: 在JavaScript代码中添加try-catch块,捕获并处理可能的异常,同时记录详细的错误信息到日志中,以便后续分析。
-
资源加载: 检查所有在WebView中引用的资源(如图片、脚本、样式表等)是否都能正确加载,没有404或网络错误。
-
第三方库与插件: 如果使用了第三方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社区或相关开发者论坛求助,提供完整的错误日志和相关代码,以便获得更具体的帮助。