onMounted(async () => {
const obj = uniCloud.importObject('nainiu-client-news', { customUI: true });
console.log('[1] typeof obj.list =', typeof obj.list); // 'function' / 'undefined'
console.log('[2] Object.keys(obj) =', JSON.stringify(Object.keys(obj))); // Proxy 通常为 []
try {
const res = await obj.list({ pageNo: 1, pageSize: 10 });
console.log('[3] 调用成功:', res);
} catch (e) {
console.log('[3] 调用失败:', e?.errCode, '|', e?.errMsg || e?.message);
}
}); - 发布:2026-10-14 16:23
- 更新:2026-10-14 16:49
- 阅读:38
产品分类: uniapp/App
PC开发环境操作系统: Mac
PC开发环境操作系统版本号: macOS Tahoe 26.3.1
手机系统: Android
手机系统版本号: Android 16
手机厂商: OPPO
手机机型: 一加 12
页面类型: vue
vue版本: vue3
打包方式: 云端
项目创建方式: CLI
CLI版本号: 3.0.0-5020620260917001
App下载地址或H5⽹址: https://mp-ef4986c0-4c85-4a59-a206-01c61ce0cb14.cdn.bspapp.com/__UNI__C657B0C_1014161312.apk
操作步骤:
预期结果:
[3] 调用成功
[3] 调用成功 实际结果:
15:57:09.432 [1] typeof obj.list =, function at pages/moyu-shop-coffee/index_base/index_base.vue:98
15:57:09.437 [2] Object.keys(obj) =, [] at pages/moyu-shop-coffee/index_base/index_base.vue:99
15:57:09.790 [3] 调用失败:, SYS_ERR, |, request:ok at pages/moyu-shop-coffee/index_base/index_base.vue:104
15:57:09.432 [1] typeof obj.list =, function at pages/moyu-shop-coffee/index_base/index_base.vue:98
15:57:09.437 [2] Object.keys(obj) =, [] at pages/moyu-shop-coffee/index_base/index_base.vue:99
15:57:09.790 [3] 调用失败:, SYS_ERR, |, request:ok at pages/moyu-shop-coffee/index_base/index_base.vue:104 bug描述:
uniapp vue3 cli 项目,在 hbuilderx 中关联另一个 uni-admin 项目的 uniCloid,在 web 端和小程序端均可正常连接使用,在 app真机调试时无法调用,测试报错
调用失败:, Error: request:ok, | errCode:, SYS_ERR, | errMsg:, request:ok, | message:, request:ok
uniCloud 控制台中没有任何调用信息。
尝试开启 uni云端一体安全网络 (配置 app 为测试版本,manifest.json 中打开 SecureNetwork,uniCloud 控制台中启用安全网络,打包自定义基座后运行) 后还是报上述错误,没有任何效果。
服务空间:阿里云
cli package.json 文件:附件
欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。
收到你的 bug 反馈,以下从官方视角对该反馈进行评审和分析。
一、反馈内容完整性评审
整体来看这份反馈质量较高,核心信息基本齐全,但有几处需要补充:
- 标题与描述:清晰明确。“cli 项目仅 App 端真机无法连接 UniCloud,小程序端和 web 端正常”这一核心现象概括准确,且补充了服务空间类型(阿里云)、关联方式(关联 uni-admin 项目的服务空间)、已尝试的排查手段(云端一体安全网络无效),这些信息对排查很有价值。
- 代码示例:逻辑清晰,但依赖你项目中已部署的
nainiu-client-news云对象,官方人员无法直接独立运行。建议补充一个最小化复现工程(如空白 vue3 项目 + 任意云对象),或补充uniCloud.callFunction方式的调用结果作对比。 - 复现步骤:基本可复现,但建议补充:HBuilderX 具体版本号、App 端运行使用的是标准基座还是自定义基座、是否开启了 uniCloud 本地调试。
- 预期结果:合理。云对象在 App 端正常情况下应可调用成功。
- 实际结果:不属于误报。其中
[1] typeof obj.list = function和[2] Object.keys(obj) = []是正常现象(云对象客户端为 Proxy 代理对象,枚举键为空是预期行为),关键异常在[3]——说明云对象实例创建成功,但调用链路失败。 - 分类信息:基本完整,但 HBuilderX 版本只写了“正式版”,缺少具体版本号(如 5.26.x),该信息对定位问题非常关键,请补充。
- 附件:我无法识别附件内容,请将 package.json 中 @dcloudio 相关依赖版本直接以文本形式贴出。
二、bug 是否成立的分析
从社区已有记录看,你的现象与一个已知问题高度吻合:
【报Bug】uniCloud 登录报错 "request:ok" 排查全记录(application_fjson 编译 bug) 记录了相同特征的问题:某版本工具链下,App-Android 端 uni.request 发送 Content-Type: application/json 的 POST 请求时,请求头被错误改写为 application_fjson("/" 变成 "_f"),导致阿里云服务空间(走 api.next.bspapp.com 新网关)所有 API 不可用,callFunction/importObject 抛出 {errCode: "SYS_ERR", errMsg: "request:ok"},且云端函数无任何调用记录(请求在网关入口被 415 拒绝,未到达云函数)。该记录同时确认 H5 端无此问题——与你“web 端和小程序端正常、仅 App 端异常、uniCloud 控制台无调用信息”的特征一致。其中还解释了 request:ok 是误导性报错:传输层成功时 errMsg 即为 "request:ok",uniCloud 客户端解析被拒响应体取不到 message 时兜底使用了该串。
这也与你“开启云端一体安全网络后无效”的观察相容:若请求在网关入口就被拒绝,问题发生在更底层的请求链路,与安全网络配置无关。
验证方法(可用于确认是否为同一问题),在 App 端页面中直接执行:
uni.request({
url: 'https://api.next.bspapp.com/client',
method: 'POST',
header: { 'Content-Type': 'application/json' },
data: { method: 'serverless.auth.user.anonymousAuthorize', params: '{}' },
success: (res) => {
console.log('statusCode =', res.statusCode);
console.log('body =', JSON.stringify(res.data));
}
})
本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
若返回 statusCode 415,且响应体包含 Invalid mime type "application_fjson": does not contain '/',即可确认是请求头被改写的问题。该帖还提到:将 Content-Type 写成 application/json;charset=utf-8 可绕过改写(仅适用于自写 uni.request 的场景,uniCloud 内部调用无法直接修改请求头,需依赖官方修复)。
另一个可顺带排查的方向:若你在 HBuilderX 中开启了 uniCloud 本地调试,真机需与电脑在同一局域网,否则本地调试服务不对客户端生效,参考 真机上无法调用云端云函数。不过该场景通常会明确提示“连接本地调试服务失败”,与你的 SYS_ERR/request:ok 不一致,可先确认控制台有无此类提示以排除。
三、请补充以下信息以便进一步确认
- HBuilderX 的具体版本号(正式版具体版本,如 5.26.x);
- package.json 中 @dcloudio 相关依赖版本(直接贴文本);
- 上述 uni.request 验证代码在真机上的实际返回(statusCode 和 body);
- App 端运行使用的是标准基座还是自定义基座,是否开启了 uniCloud 本地调试。
补充这些信息后,若确认与上述社区记录为同一问题,建议在该帖下补充你的版本信息,或继续在 ask.dcloud.net.cn 跟进,便于官方汇总排查并在后续版本中修复。
m***@163.com (作者)
-
补充信息
-
HBuilderX 的版本号:5.26
-
经确认确实是 App-Android 端会把请求头
Content-Type: application/json错误改写成application_fjson("/" 被替换成 "_f")。但我的项目中并没有修改请求头的相关代码 -
解决方法:main.ts 中加入全局全局请求拦截器,把
application/json自动补成application/json;charset=utf-8
// #ifdef APP-PLUS
/**
* ⚠️ 临时兼容
*
* 现象:App-Android 端调用 uniCloud 云函数/云对象报
* { errCode: 'SYS_ERR', errMsg: 'request:ok' },且 uniCloud 控制台无任何调用日志。
* 原因:HBuilderX 5.26.x 工具链会把请求头 Content-Type 的 `application/json`
* 错误改写为 `application_fjson`("/" 被替换成 "_f"),阿里云网关(api.next.bspapp.com)
* 在入口就以 415 拒绝(Invalid mime type "application_fjson": does not contain '/'),
* 请求根本到不了云函数。详见 https://ask.dcloud.net.cn/question/221035
* 绕过:显式带 charset(application/json;charset=utf-8)不会被改写。
*/
uni.addInterceptor('request', {
invoke(args) {
const header = args?.header || {};
const current = header['Content-Type'] ?? header['content-type'];
if (!current || current === 'application/json') {
header['Content-Type'] = 'application/json;charset=utf-8';
args.header = header;
}
},
});
// #endif
虽然已经解决,但发生原因令人困惑,希望官方给于答复!