You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript中ipfs.add结合globSource使用报asyncIterator错误如何解决?

问题根因

两个核心错误触发原因:

  • 你调用的ipfs.add()方法返回的是单个Promise<AddResult>,本身不是异步可迭代对象,不能直接放在for await...of里遍历
  • 当前IPFS类型定义下,globSource返回的异步生成器类型,和ipfs.add要求的单个导入候选ImportCandidate类型不匹配,ipfs.add只能接收单个文件/内容,不能直接接收批量的目录遍历结果

修复方案

按优先级选以下任意一种即可:

方案1:改用ipfs.addAll方法(最推荐)

ipfs.addAll是专门用来处理批量导入的API,支持直接传入globSource的返回值,且本身返回异步迭代器,适配for await...of遍历:

for await (const entry of ipfs.addAll(
    globSource(dirPath, { recursive: true, ignore }),
)) {
  // 原有处理entry的逻辑不变
}

方案2:如果必须用ipfs.add,先遍历globSource逐个导入

如果你的IPFS版本没有addAll方法,就先遍历globSource的每一项,单独调用ipfs.add:

for await (const candidate of globSource(dirPath, { recursive: true, ignore })) {
  const entry = await ipfs.add(candidate)
  // 原有处理entry的逻辑不变
}

补充类型兼容修复(如果改完方法还有类型报错)

如果调整方法后还是有类型不匹配提示,给globSource的返回值加个显式类型断言即可:

import type { ImportCandidate } from 'ipfs-core-types/src/utils'

for await (const entry of ipfs.addAll(
    globSource(dirPath, { recursive: true, ignore }) as AsyncIterable<ImportCandidate>,
)) {
  // 处理逻辑
}

内容的提问来源于stack exchange,提问作者Nika Kurashvili

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 01:15:01