HarmonyOS 鸿蒙Next rcp.Session.post 报错 Failed writing received data to disk/application,有10%的概率不报错,90%报这个错。

发布于 1周前 作者 songsunli 来自 鸿蒙OS

HarmonyOS 鸿蒙Next rcp.Session.post 报错 Failed writing received data to disk/application,有10%的概率不报错,90%报这个错。
cke_329.png

cke_657.png

我之前都是好好的,这是在我今天升级了最新版本 IDE 后出现的。


更多关于HarmonyOS 鸿蒙Next rcp.Session.post 报错 Failed writing received data to disk/application,有10%的概率不报错,90%报这个错。的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

已经解决了,记录如下:


我创建了一个 rcp.Session,然后调用 rcp.Session.post,并设置第三个参数 destinationDownloadToStream,完整代码如下:

const session = rcp.createSession()
session.post(apiURL, { name: 'xiaoming' }, {
    kind: 'stream',
    stream: {
        writeSync(chunk: ArrayBuffer) {
            // 这里处理流式响应的内容
        }
    }
})
.catch((error: BusinessError) => {
    console.error(error.message)
})

运行上面的代码,就会出现概率性的报错 Failed writing received data to disk/application,原因是 writeSync 方法抛出了错误,从而在外层 rcp.Session.post 报错。

所以,产生本贴报错的原因就是,我的 writeSync 方法内部写的代码出了问题,具体如下:

// 这里是 writeSync 方法内部
// 此时拿到了 chunk: ArrayBuffer
// 经过一系列处理,拿到了 data: []
data.map(chunk => chunk.choices[0]?.delta.content).join('')
// 问题来了↓
// 当 choices 的长度为 0 时,choices[0] 未定义,会报无法从未定义的对象中获取属性的错误
// 如果是未定义 delta 属性,同样会产生 content 属性的错误
// 结合业务逻辑,修正代码如下
data.map(chunk => chunk.choices[0]?.delta.content).join('')

更多关于HarmonyOS 鸿蒙Next rcp.Session.post 报错 Failed writing received data to disk/application,有10%的概率不报错,90%报这个错。的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对帖子标题中提到的HarmonyOS鸿蒙Next环境中rcp.Session.post报错“Failed writing received data to disk/application”,且该错误有90%的概率出现的情况,可能的原因及解决方案如下:

该错误通常表明在接收数据后,系统无法将数据成功写入磁盘或应用程序指定的存储位置。可能的原因包括:

  1. 存储空间不足:检查设备或应用的存储空间是否充足,确保有足够的空间来存储接收的数据。

  2. 文件权限问题:确认应用具有写入目标存储位置的权限。在鸿蒙系统中,应用可能需要特定的权限才能访问或修改某些文件或目录。

  3. 磁盘故障或文件系统错误:检查磁盘的健康状况,确保没有物理损坏或文件系统错误。

  4. 并发写入冲突:如果多个进程或线程同时尝试写入同一文件,可能会导致写入失败。检查应用的并发写入逻辑,确保数据写入操作的同步性。

  5. 应用内部逻辑错误:检查rcp.Session.post调用及其后续处理逻辑,确保数据接收和写入流程正确无误。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部