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

React v17升级后ipfs.files.add报is not a function错误问题求助

问题原因及修复方案

问题根因

本次依赖升级时ipfs-http-client包升级到了存在不兼容破坏性变更的版本,旧版本的ipfs.files.add接口、回调调用方式、返回值结构均已被移除或调整,所以触发了方法不存在的报错。

修复方案

提供两种可选修复方式,可根据项目需求选择:

方案1:适配新版本API(推荐)

调整两处代码即可适配新版ipfs-http-client的接口规范:

  1. 修改NewReview.js中的getHash方法,替换回调写法为async/await,调用ipfs.add替代旧的ipfs.files.add:
async function getHash() {
  try {
    const result = await ipfs.add(Buffer.from(buffer))
    // 新版返回结构中hash对应path字段
    setIpfsHash(result.path)
  } catch (error) {
    console.error(error)
  }
}
  1. 如果调用时出现401权限错误,需要在ipfs.js的创建配置中补充Infura节点的授权信息(Infura现在已不再支持无授权调用公共IPFS节点):
const { create } = require('ipfs-http-client');
const auth = 'Basic ' + Buffer.from('你的Infura项目ID:你的Infura项目密钥').toString('base64')
const ipfs = create({
  host: 'ipfs.infura.io', 
  port: 5001, 
  protocol: 'https',
  headers: { authorization: auth }
});

export default ipfs;

方案2:回退到兼容旧版本

如果不想调整业务代码,可以直接将ipfs-http-client固定到支持旧API的版本:
执行安装命令:
npm install ipfs-http-client@33.1.1
安装完成后删除项目的node_modules文件夹和package-lock.json文件,重新执行npm install即可恢复原有逻辑的运行。

验证步骤

修改完成后重启本地开发服务,清空浏览器缓存后测试图片上传功能即可。

内容的提问来源于stack exchange,提问作者A-PSquestions

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:54:05