TypeError: can’t access property “map”

这个报错通常出现在把包含 Image Comparer (rgthree) 节点的工作流图片拖回 ComfyUI 时,前端反序列化节点组件值时把原本应为对象的 widgets_values 错误地变成了数组代理,导致 this.widgets[index].value.images 为 undefi

快速结论:这个报错通常出现在把包含 Image Comparer (rgthree) 节点的工作流图片拖回 ComfyUI 时,前端反序列化节点组件值时把原本应为对象的 widgets_values 错误地变成了数组代理,导致 this.widgets[index].value.images 为 undefined 并触发 TypeError: can't access property "map"。优先排查并考虑升级或降级 ComfyUI_frontend 版本,而不是修改 rgthree 节点代码。

适用环境:Issue 中确认涉及 ComfyUI 前端 v1.53.3、v1.53.4、v1.51.9(HEAD 正常)和 v1.54.0(复现);相关 ComfyUI 版本为 0.34.0;工作流图片由前端 1.39.19 保存;节点为 Image Comparer (rgthree)。其他系统、Python、CUDA、显卡信息 Issue 未提供。

最快修复方案:暂无确认的一步修复方案。Issue 中给出的临时绕过方法是:关闭 rgthree 节点后重启 ComfyUI,加载工作流,删除 Image Comparer (rgthree) 节点并保存工作流,再开启 rgthree 重启。另有评论提到 ComfyUI_frontend #16479 可能已在 v1.54.2 中修复,但该评论作者明确表示“尚未验证”。

注意事项:临时绕过方案会删除工作流中的 Image Comparer 节点,若需要保留该节点配置,操作前应另存或备份工作流文件。升级到 v1.54.2 是否彻底解决尚未在 Issue 中得到确认;该问题被标记为“由 ComfyUI 前端引起”,因此不建议仅针对 Image Comparer 做 custom_nodes 侧 hack,因为同类复杂 widget 值的其他节点可能同样受影响。

问题场景

用户在 ComfyUI 中把带有工作流元数据的 PNG 图片拖入界面以加载工作流。当该工作流包含 Image Comparer (rgthree) 节点,并且使用的 ComfyUI_frontend 为 v1.53.3 或 v1.53.4 时,工作流无法正确加载。v1.53.3 会报错并尝试在当前标签页加载工作流,v1.53.4 在同样报错之外还会破坏 UI。工作流图片本身是在前端 1.39.19 保存的。

报错原文

Failed to parse prompt: TypeError: can't access property "map", this.widgets[index].value.images is undefined
    onSerialize http://127.0.0.1:8188/extensions/rgthree-comfy/image_comparer.js:64
    i http://127.0.0.1:8188/assets/settingStore-CdKCpowA.js:2
    runExtensionSerializeHook http://127.0.0.1:8188/assets/settingStore-CdKCpowA.js:2
    serializeFromStoreState http://127.0.0.1:8188/assets/settingStore-CdKCpowA.js:2
    serialiseStoredNodes http://127.0.0.1:8188/assets/settingStore-CdKCpowA.js:2
    serialiseStoredNodes http://127.0.0.1:8188/assets/settingStore-CdKCpowA.js:2
    asSerialisable http://127.0.0.1:8188/assets/settingStore-CdKCpowA.js:2
    serialize http://127.0.0.1:8188/assets/settingStore-CdKCpowA.js:2
    serialize http://127.0.0.1:8188/extensions/rgthree-comfy/rgthree.js:275
    captureCanvasState http://127.0.0.1:8188/assets/settingStore-CdKCpowA.js:179
    deactivate http://127.0.0.1:8188/assets/settingStore-CdKCpowA.js:179
    beforeLoadNewGraph http://127.0.0.1:8188/assets/settingStore-CdKCpowA.js:179
    loadApiJson http://127.0.0.1:8188/assets/settingStore-CdKCpowA.js:195
    loadApiJson http://127.0.0.1:8188/extensions/rgthree-comfy/rgthree.js:523
    handleFile http://127.0.0.1:8188/assets/settingStore-CdKCpowA.js:195

原因分析

根据 Issue 中维护者的分析,问题出在 ComfyUI 前端对节点 widget 值的序列化/包装方式发生变化。Image Comparer (rgthree) 的第一个 widget 值期望是一个对象,其中包含一个 images 数组字段,例如:

widgets_values: [
  {
    images: [
      { name: 'A', selected: true, url: '...' },
      { name: 'B', selected: true, url: '...' }
    ]
  }
]

但在受影响的版本中,widgets_values 被前端改写为 proxied values 数组,实际传给节点的值变成了图片数组本身,而不是包含 images 字段的对象。于是 this.widgets[index].value.images 为 undefined,后续对它调用 .map 就会抛出上述 TypeError。Issue 中明确认为这更可能是 ComfyUI 前端的回归问题,并可能影响许多具有复杂 widget 值的节点,因此不建议只在 Image Comparer 侧做规避性修补。

环境排查

  • 确认 ComfyUI 版本:Issue 相关验证为 ComfyUI 0.34.0。
  • 确认 ComfyUI_frontend 版本:v1.53.3、v1.53.4 可复现;v1.51.9 正常;v1.54.0 仍可复现;评论提到 v1.54.2 可能包含修复,但未验证。
  • 确认是否安装并启用了 rgthree-comfy 扩展,且工作流中包含 Image Comparer (rgthree) 节点。
  • 确认工作流图片的保存前端版本:Issue 中为 1.39.19。
  • Issue 未提供 Python、CUDA、PyTorch、显卡或操作系统的具体版本,无需凭空补充。

解决步骤

  1. 先确认当前 ComfyUI_frontend 版本是否落在受影响区间(v1.53.3 至 v1.54.0 均可复现)。若可切换版本,可优先尝试升级到包含 ComfyUI_frontend #16479 修复的版本;Issue 评论猜测可能是 v1.54.2,但尚未验证。
  2. 如果无法立即升级或升级后仍复现,使用 Issue 中给出的临时绕过流程:
  3. 关闭 rgthree 节点(在 ComfyUI 中禁用 rgthree-comfy 扩展)后重启 ComfyUI。
  4. 加载报错的工作流图片;此时由于 rgthree 已禁用,Image Comparer 节点不会触发该序列化错误。
  5. 在工作流中删除 Image Comparer (rgthree) 节点,然后保存工作流。
  6. 重新启用 rgthree 扩展并重启 ComfyUI,再加载刚才保存的工作流。
  7. 如果在禁用 rgthree 后工作流仍无法加载,说明可能还有其它复杂 widget 节点受影响,需要进一步在前端 issue #16479 中确认修复状态。

验证方法

完成版本调整或临时绕过处理后,重新把包含工作流元数据的 PNG 图片拖入 ComfyUI。若不再出现 TypeError: can't access property "map", this.widgets[index].value.images is undefined,且工作流能正常加载、UI 不被破坏,则说明该问题在当前环境下已规避或已修复。如果使用删除节点的绕过方案,应确认工作流中已不包含 Image Comparer (rgthree) 节点,保存后的 JSON 中不再出现该类型节点。

参考来源

rgthree/rgthree-comfy #761

相关前端 Issue:Comfy-Org/ComfyUI_frontend #16479

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 25528

发表回复

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