Agent Builder Instructions field drops every keystroke: “Can not convert to a Fragment (looks like multiple versions of prosemirror-model we

该报错出在 n8n Agent Builder 的 Instructions 字段:编辑器组件内加载了多份 prosemirror-model,ProseMirror 解析键入内容时抛 RangeError: Can not convert to a Fragment (looks like mul

快速结论:该报错出在 n8n Agent Builder 的 Instructions 字段:编辑器组件内加载了多份 prosemirror-model,ProseMirror 解析键入内容时抛 RangeError: Can not convert to a Fragment (looks like multiple versions of prosemirror-model were loaded),导致每个字符被丢弃。优先升级 n8n 到已修复版本。

适用环境:Issue 报告者为 self-hosted n8n 2.43.7(Docker on Mac)、SQLite 默认数据库、默认 main 执行模式;浏览器为 Chrome 155(Windows 10/11 x64)。Node.js 版本未确认。

最快修复方案:升级到 n8n 2.44.0 或更高版本。维护者确认该问题已在 2.44.0 中修复(对应 PR #40805),并明确建议受影响用户升级;2.43.x 分支是否回填未确认。

注意事项:暂时无法升级时,可先展开 Instructions 编辑器、切换到 Raw Markdown 模式输入,该 textarea 可正常输入并保存。Issue 中未提供在旧版本内直接修复依赖冲突的已验证方案,不建议手动改动 vendor 打包产物。

问题场景

在 n8n 的 Agent Builder(Build 标签页)中打开任意 Agent,点击 Instructions 字段后键入文字。编辑器能获得焦点、光标可见、isEditable 为 true,但每个字符输入后立即消失,无法通过键盘输入内容。Agent 页面的其他字段正常;通过 API 方式调用 editor.commands.insertContent() 写入则生效,且可自动保存、刷新后仍在。

报错原文

RangeError: Can not convert <"t"> to a Fragment (looks like multiple versions of prosemirror-model were loaded)
    at e.from (vendor-BVB-Yazq.js:81:9886)
    at e.create (vendor-BVB-Yazq.js:82:5054)
    at sN.finish (vendor-BVB-Yazq.js:77:8451)
    at Fmt.finish (vendor-BVB-Yazq.js:79:2865)
    at e.parse (vendor-BVB-Yazq.js:77:5828)
    at axt (vendor-BVB-Yazq.js:88:37653)
    at cxt (vendor-BVB-Yazq.js:88:39263)
    at Zbt.handleDOMChange (vendor-BVB-Yazq.js:88:44975)
    at Zbt.flush (vendor-BVB-Yazq.js:88:34217)
    at Zbt.observer (vendor-BVB-Yazq.js:88:30659)

随着输入内容增长,报错会重复出现并带上当前文本(”t”、”te”、”tes”、”test”),即每敲一个键抛一次。报错出现在浏览器控制台。

原因分析

最可能的原因是 editor-ui 的 vendor 打包中同时存在多个 prosemirror-model 副本。ProseMirror 的 DOM observer 在解析浏览器插入的变更时,需要把 DOM 变更转换为自身库中的 Fragment 与节点类型实例;当构造这些对象所用的 prosemirror-model 与编辑器实例当前加载的版本不一致时,类型校验失败,于是抛出上述 RangeError,键入内容随即被丢弃。

Issue 中的旁证包括:keydown、beforeinput、input 事件均正常到达 ProseMirror 元素且未被取消,说明浏览器已插入文本,问题发生在 ProseMirror 解析阶段;直接调用 insertContent() 可写入,而只走 DOM 输入的路径失败,符合依赖实例不一致的表现。维护者指出修复 PR #40805 的作用正是确保编辑器使用同一版本的 prosemirror-model。

环境排查

  • 确认 n8n 版本:受影响版本为 2.43.7;修复版本为 2.44.0 及以上。先通过部署信息确认实际运行版本,避免升级了镜像但容器仍运行旧镜像的情况。
  • 确认部署方式与镜像:Issue 场景为 Docker on Mac 的 self-hosted 部署,升级后需确认容器已用新镜像重建,而非沿用旧容器。
  • 确认数据库与执行模式:Issue 环境为 SQLite(默认)与 main(默认)执行模式;这两项在 Issue 中未显示与该问题相关。
  • 确认浏览器环境:Issue 使用 Chrome 155(Windows 10/11 x64);可尝试在无扩展、无缓存的浏览器会话中复现,以排除本地缓存旧版前端资源的干扰。
  • Node.js 版本在 Issue 中为“Not sure”,无法据此判断;本问题判断为前端依赖加载问题,不以 Node.js 版本作为主要排查项。

解决步骤

  1. 记录当前 n8n 版本,确认是否低于 2.44.0。
  2. 将 n8n 升级到 2.44.0 或更高版本,并使用对应版本的官方镜像重新部署;Issue 维护者确认修复已包含在 2.44.0,并建议受影响用户直接升级。
  3. 升级后强制刷新浏览器(清除前端资源缓存)并重新打开 Agent Builder 的 Build 标签页,以避免浏览器继续加载旧版 vendor 资源。
  4. 若暂时无法升级,可优先尝试 Issue 中给出的规避方法:展开 Instructions 编辑器,切换到 Raw Markdown 模式,在该 textarea 中输入并保存。
  5. 若升级后仍然复现,在浏览器控制台中检查是否仍出现同一 vendor 文件与同一报错,并收集 n8n 版本、部署方式、浏览器版本与完整控制台堆栈,反馈到 Issue 或新开工单。

验证方法

在升级后的 n8n 中打开任意 Agent,点击 Instructions 字段连续键入文字,确认字符正常显示、控制台不再出现 Can not convert ... to a Fragment (looks like multiple versions of prosemirror-model were loaded);保持编辑器焦点并刷新页面,确认输入内容已自动保存且仍然存在。Issue 报告者通过升级到 2.44.0+ 后未再出现该问题。

参考来源

n8n-io/n8n #41287(对应修复 PR #40805,修复版本 2.44.0)

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 29425

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注