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

无法连接IPFS报Error: no protocol with name: quic-v1问题求助

解决ipfs-http-client调用ipfs.id()时报错"no protocol with name: quic-v1"

问题根源

你使用的ipfs-http-client v56.0.3依赖的multiaddr版本不支持quic-v1协议,而Docker中运行的最新版Kubo节点默认启用了QUIC v1协议,调用ipfs.id()返回的节点地址里包含quic-v1字段,客户端解析时因无法识别该协议抛出错误。

解决办法

方法1:升级ipfs-http-client到兼容版本

直接将ipfs-http-client升级到支持quic-v1的新版本(v60及以上版本已适配):

npm install ipfs-http-client@latest

升级后重新运行代码,即可正常获取节点ID。

方法2:禁用Kubo节点的QUIC v1协议

如果不想升级客户端,可修改Docker中Kubo节点的配置,关闭QUIC v1:

  1. 进入运行中的Kubo容器:
docker exec -it ipfs_host sh
  1. 更新IPFS swarm地址配置,移除包含quic-v1的条目:
ipfs config Addresses.Swarm --json '["/ip4/0.0.0.0/tcp/4001", "/ip6/::/tcp/4001", "/ip4/0.0.0.0/udp/4001/quic"]'
  1. 重启容器使配置生效:
docker restart ipfs_host

之后再运行Node.js代码,即可避免协议解析错误。

方法3:临时过滤不支持的地址(不推荐)

如果以上两种方案都无法实施,可在客户端代码中手动过滤掉包含quic-v1的地址:

const client = require("ipfs-http-client");

const ipfs = client.create("/ip4/127.0.0.1/tcp/5001");

const test = async () => {
  let id = await ipfs.id();
  // 过滤quic-v1协议的地址
  id.addresses = id.addresses.filter(addr => !addr.includes('quic-v1'));
  console.log(id);
};

module.exports = { test };

此方法仅为临时规避问题,建议优先采用前两种方案从根源解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 05:45:31