快速结论:这是 n8n 内置 Qdrant Vector Store 节点在 Node.js 26 环境下连接 Qdrant Server 1.19.x 时的兼容性问题:节点打包的 @qdrant/js-client-rest@^1.16.2 依赖 undici v6,与 Node 26 内置的 undici v8 调度器不匹配,连接在发起阶段就被拒绝,n8n 只显示通用的 fetch failed。
适用环境:Issue 已确认的环境为 n8n 2.37.10、docker 自托管、Node.js 26.5.1、Postgres、Qdrant Server 1.19.x。修复版本为 n8n 2.39.5 / 2.39.6(已内置 @qdrant/js-client-rest@^1.19.0);n8n 2.38.2 仍锁定 ^1.16.2。
最快修复方案:升级 n8n 到 2.39.x(至少 2.39.5 / 2.39.6),该版本已把内置的 Qdrant 客户端升级到 ^1.19.0,修复随该版本发布。
注意事项:临时把 Qdrant 客户端版本手动覆盖到 1.19.x 属于社区推测做法,Issue 中未验证,可优先尝试但需自行验证;不要指望通过客户端兼容性开关(如关闭兼容性检查)来绕过 fetch failed,因为该检查只打印警告、不会阻断或抛出。此外,若仍运行 n8n 2.38.2 及更早版本,升级到 2.39.x 前的旧构建仍会复现。
问题场景
在 n8n(2.37.10,docker 自托管,Node.js 26.5.1)中使用内置的 Qdrant Vector Store 节点连接 Qdrant Server 1.19.x 时触发。同一套 Qdrant URL 和凭据在官方社区节点 n8n-nodes-qdrant 中可以正常列出 collection 并执行 Get Collection,但内置节点在加载 collection 下拉列表时即报错,手动填写 collection 名称后执行节点同样失败。该环境在 Qdrant 服务端版本领先于 n8n 内置客户端之前长期工作正常。
报错原文
Could not load list
fetch failed
fetch failed
原因分析
最终定位到的根因是依赖内部的调度器(dispatcher)大版本不匹配,而不是 Qdrant 客户端的版本兼容性检查:
- n8n 内置节点打包的
@qdrant/js-client-rest@1.16.2依赖undici: ^6.0.0。 - Node.js 26 内置的是 undici 8,已移除旧的 handler 包装层。把 v6 dispatcher 交给全局
fetch时会被拒绝,抛出invalid onError method,最终被 n8n 汇总为通用的fetch failed。 - Issue 正文推测的“客户端版本兼容性检查拒绝 1.19.x 服务端”这一解释后来被纠正:在
@qdrant/js-client-rest@1.16.2中,该探测是 fire-and-forget 的,只会在控制台打印警告(console.warn),不会抛出、也不会阻断请求。因此兼容性警告与fetch failed是同一失败请求的两个症状,关闭兼容性检查无法修复已失败的请求。
该问题与 #22159(旧版因固定客户端版本导致的兼容问题)形式相似,但本次实际修复点是调度器版本不匹配,修复形态与 #37903、#37758 属同一类。
环境排查
- n8n 版本:确认是否为 2.37.10;并核对是否已升级到 2.39.5 / 2.39.6(修复版本)。2.38.2 及更早仍锁定
@qdrant/js-client-rest: ^1.16.2。 - Node.js 版本:确认是否为 26.x(本 Issue 为 26.5.1),因为调度器冲突与该大版本相关。
- Qdrant Server 版本:确认是否为 1.19.x。
- 依赖版本:检查
@n8n/n8n-nodes-langchain中声明的@qdrant/js-client-rest版本,以及其传递依赖的undici版本(v6 vs v8)。 - 部署方式:docker 自托管、Postgres,execution mode 为 scaling(single-main)。
- 对照组:用官方社区节点
n8n-nodes-qdrant以相同 URL / 凭据访问同一 Qdrant Server,确认服务端与凭据本身可用。
解决步骤
- 确认当前 n8n 版本。若为 2.38.2 或更早,说明仍受此问题影响;若为 2.37.10,同样受影响。
- 升级 n8n 到 2.39.x(Issue 明确验证到 2.39.5、2.39.6)。这两个版本的 release tag 已将内置客户端 pin 到
@qdrant/js-client-rest: ^1.19.0,与 Node 26 的 undici 调度器问题一并解决。 - 升级后重启 n8n 服务,使新的依赖版本生效。
- (可选,仅作参考)若暂时无法升级,可优先尝试在自建镜像中把
@qdrant/js-client-rest覆盖到 1.19.x。此为社区推测方案,Issue 未验证,操作前建议先备份并记录依赖来源。 - 不要尝试通过关闭 Qdrant 客户端的兼容性检查来修复。该检查在 1.16.2 中不阻塞请求,关闭它无法改变 dispatcher 被拒绝导致的失败。
验证方法
升级并重启后,打开 Qdrant Vector Store 节点的 collection 下拉列表:若不再显示 Could not load list / fetch failed,并能列出 Qdrant Server 1.19.x 上的 collection,说明调度器冲突已解除。随后执行一次 Vector Store 操作(例如 Get Collection 或写入/查询)确认无 fetch failed,即表示问题已解决。如仍失败,请在 Issue 下留言并提供新的 n8n 与 Node.js 版本信息。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


