You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS模拟器运行正常,Android端调用Nativescript-Webview-Interface emit时报错

解决NativeScript-Webview-Interface Android端emit/callJSFunction报错问题

你遇到的这个sdkVersion未定义错误,是插件Android端代码引用了错误的系统API导致的,下面给你几个针对性的解决方案:

1. 手动修复插件Android端代码(快速临时解决)

根据错误堆栈,问题出在node_modules/nativescript-webview-interface/index.android.js第78行,这里是插件代码错误引用了Android系统版本属性。你可以直接修改这段代码:

  • 打开该文件,找到第78行附近的代码,应该是类似这样的写法:
    if (android.os.Build.VERSION.sdkVersion >= 19) {
        // 相关逻辑代码
    }
    
  • 将错误的sdkVersion改成Android官方正确的属性名SDK_INT:
    if (android.os.Build.VERSION.SDK_INT >= 19) {
        // 相关逻辑代码
    }
    

Android系统获取SDK版本的标准API是android.os.Build.VERSION.SDK_INT,插件里的错误写法才导致了TypeError: Cannot read property 'sdkVersion' of undefined。

2. 更新插件到最新版本

这个错误大概率是插件旧版本的已知bug,你可以尝试更新插件到最新版来解决:

npm install nativescript-webview-interface@latest --save

更新后检查index.android.js里的代码是否已经修复了sdkVersion的问题,若已修复就无需手动修改了。

3. 确保WebView加载完成后再调用emit

还要注意,必须在WebView完全加载完成后,再调用emit或callJSFunction方法。比如在Vue组件中,你可以监听WebView的loaded事件:

<WebView ref="webView" @loaded="initWebViewInterface" src="~/path/to/your/webpage.html" />

然后在事件回调中初始化WebViewInterface并执行后续操作:

initWebViewInterface() {
  this.webViewInterface = new WebViewInterface(this.$refs.webView.nativeView);
  // 在这里调用emit或callJSFunction
}

4. 检查NativeScript版本兼容性

如果你的NativeScript版本较新(比如7.x及以上),要确认插件是否支持当前版本。若插件长时间未更新,可能存在兼容性问题,这种情况下可以考虑寻找替代插件,或者给该插件提交PR修复问题。

内容的提问来源于stack exchange,提问作者Suraj Bharti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 08:52:46