uni-app离线打包调用云函数报错
uni-app离线打包调用云函数报错
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | windows10 | HBuilderX |
| Android | Android 15 | |
| 手机厂商 | 手机机型 | |
| 小米 | redmi k80 pro |
示例代码:
// 调用代码如下:
val callCloudFunction = fun(methodName: String, param: UTSJSONObject){
Log.i("unipush", "callCloudFunction methodName=" + methodName + ", param=" + param.toJSONString())
val options = UniCloudCallFunctionOptions(name = methodName, data = param)
uniCloud.callFunction(options).then(fun(res){
console.log("callFunction ", methodName, " res=", res)
Log.i("unipush", "callCloudFunction success" + res)
}
).catch(fun(err){
console.error("callFunction", methodName, "err=", err)
Log.e("unipush", "callCloudFunction fail" + err)
}
)
}
操作步骤:
1. 用hx4.76打包生成本地安卓资源文件
2. 将资源文件在android studio中更新,并已更新hx4.76最新的sdk(uni-secure-network-release.aar)
3. 在android studio中启动并调用云函数,结果报错。
预期结果:
“Log.i("unipush", "callCloudFunction success" + res)” 日志打印,返回正确结果。
实际结果:
// 报错
“java.lang.IllegalArgumentException: method uts.sdk.modules.DCloudUniCloudClient.UniCloud$callFunction$2.invoke argument 1 has type uts.sdk.modules.DCloudUniCloudClient.UniCloudError, got java.lang.IllegalArgumentException”
bug描述:
用hbuilderx4.76打包的资源文件,在本地用android studio启动调用云函数时报错了"java.lang.IllegalArgumentException: method uts.sdk.modules.DCloudUniCloudClient.UniCloud$callFunction$2.invoke argument 1 has type uts.sdk.modules.DCloudUniCloudClient.UniCloudError, got java.lang.IllegalArgumentException" , 这是什么问题,sdk版本不兼容嘛?
更多关于uni-app离线打包调用云函数报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app离线打包调用云函数报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html
根据错误信息分析,这是UTS模块在类型转换时出现的参数类型不匹配问题。具体表现为UniCloud$callFunction$2.invoke方法期望接收UniCloudError类型的参数,但实际收到了IllegalArgumentException类型。
可能的原因和解决方案:
-
SDK版本兼容性问题:HBuilderX 4.76打包的资源文件与Android Studio中集成的uni-secure-network-release.aar可能存在版本不匹配。建议检查HBuilderX版本与SDK的对应关系,确保使用完全匹配的版本。
-
UTS类型映射错误:在Kotlin/Java层调用云函数时,错误处理机制的类型映射出现异常。建议在catch块中显式处理异常类型:
.catch { err ->
val error = err as? UniCloudError ?: UniCloudError(err.message ?: "Unknown error")
Log.e("unipush", "callCloudFunction fail: ${error.message}")
}

