首页 APP开发 正文内容

HbuilderX 更新后,uni-app 引入的 UTS 插件编译报错,Vue 页面无法调用的解决方法

2023年11月18日 , , , 573

UTS 目前处在频繁更新完善的阶段,更新 HX 会导致不少问题,本文解决的就是其中一类。

问题描述

有开发的朋友反馈,他在用 uni-app 的 Vue 页面模式开发 APP,原生部分使用 UTS 开发插件,供 Vue 页面调用,这个功能一直没问题,但最近突然发现无法调用插件,控制台 sdk 错误了,而且 100% 复现。

UTS 插件运行报错

控制台报错代码如下:

[Vue warn]: Error in v-on handler: "Error: {"moduleName":"uts-a8payment","moduleType":"",
"package":"uts.sdk.modules.utsA8payment","class":"IndexKt","name":"getA8paymentByJs",
"method":[{"name":"options","type":"UTSSDKModulesUtsA8paymentInfoOptionsJSONObject"}],
"params":[{"success":5,"msg":"@d8561f7f655c99446f6b19adcd0f0987{\"CMD\":\"PRINTING\",\"CONTENT\":\"<image>qrcode.bmp\"}"}]}"
UTS 插件代码
UTS 插件代码
Vue 页面调用
Vue 页面调用

报错分析

根据我多年的 uni-app 开发经验,在代码没有改动的情况下,出现这种级别的报错,大概率是因为升级了 HuilderX,编译时采用的新的规范或者是语法。这也是 uni-app 经常被诟病的一个原因。这时候需要重新打包自定义基座

解决方法

朋友确实是升级 HbuilderX,但也重新打包了 APP 运行的基座,但问题依旧。意识到 uni-app 还有个缓存机制,于是让朋友删除项目下的 unpackage 目录缓存,重新打包自定义基座,问题就解决了。

这个方法也分享给大家,希望能解决类似的问题。