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

NFT Storage上传文件后IPFS访问CID报unknown node type错误如何解决

问题根因

你遇到的ipfs cat /ipfs/<CID>: unknown node type错误和文件大小无关,是IPFS节点类型不匹配导致的:
调用NFT Storage的client.store()方法时,接口会自动将传入的参数封装为符合NFT标准的元数据结构,返回的CID对应的是DAG-JSON类型的IPLD节点,而ipfs cat命令默认仅支持读取unixfs格式的普通文件节点,无法直接解析DAG类型节点,因此会抛出类型错误。
你在NFT Storage后台看到的metadata.json是平台主动解析DAG节点后生成的可视化内容,和实际链上存储的结构并不一致。

解决方案

根据你的使用场景选择对应方案即可:

  • 如果仅需要验证上传的元数据内容,将命令替换为ipfs dag get <你的CID>即可正常读取完整的元数据字段,包括图片的IPFS链接
  • 如果需要得到可直接用ipfs cat访问的元数据文件,可以换用storeBlob/storeDirectory方法上传,修改后的参考代码如下:
const { NFTStorage, File } = require('nft.storage')
const apiKey ='eyJ........CJ9'
const client = new NFTStorage({ token: apiKey })

// 第一步上传图片资源
const imageCid = await client.storeBlob(new File(data, fileName, { type: artfile.mimetype }))
// 组装自定义元数据
const metadata = {
  name: artworkName,
  description: description,
  artistName: artistName,
  image: `ipfs://${imageCid}`
}
// 第二步上传元数据JSON文件
const metadataFile = new File([JSON.stringify(metadata)], 'metadata.json', { type: 'application/json' })
const metadataCid = await client.storeBlob(metadataFile)
// 该CID对应普通JSON文件,可直接用ipfs cat读取
console.log(`ipfs://${metadataCid}`)
  • 如果你是对接NFT mint场景,原有代码返回的metadata.url可以直接写入链上合约,主流NFT平台都支持正常解析DAG格式的元数据CID,不需要额外修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:36:02