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类型。

可能的原因和解决方案:

  1. SDK版本兼容性问题:HBuilderX 4.76打包的资源文件与Android Studio中集成的uni-secure-network-release.aar可能存在版本不匹配。建议检查HBuilderX版本与SDK的对应关系,确保使用完全匹配的版本。

  2. UTS类型映射错误:在Kotlin/Java层调用云函数时,错误处理机制的类型映射出现异常。建议在catch块中显式处理异常类型:

.catch { err ->
    val error = err as? UniCloudError ?: UniCloudError(err.message ?: "Unknown error")
    Log.e("unipush", "callCloudFunction fail: ${error.message}")
}
回到顶部