TypeError: t.findInputSlot is not a function” (slot-0 hack in onConnectionsChange)

该报错通常发生在使用 frontend 1.47 及以上版本的 ComfyUI 中,切换工作流标签页或触发工作流重载时,而工作流里包含 ImpactSwitch、LatentSwitch、SEGSSwitch 或 Impact Pack 中另外几类共用同一处理器的节点,并且其 slot 0 有连线。

快速结论:该报错通常发生在使用 frontend 1.47 及以上版本的 ComfyUI 中,切换工作流标签页或触发工作流重载时,而工作流里包含 ImpactSwitch、LatentSwitch、SEGSSwitch 或 Impact Pack 中另外几类共用同一处理器的节点,并且其 slot 0 有连线。优先排查并升级 Impact-Pack 到包含 PR #1228 修复的版本。

适用环境:ComfyUI 0.28.0、frontend 1.47.9、Impact-Pack 8.28.3(700821e)、Windows 11;修复在 ComfyUI 0.32.0 实例中验证过;原报告未提供 Python、CUDA、PyTorch 或显卡版本。

最快修复方案:更新 Impact-Pack 到包含 PR #1228 的版本,该 PR 移除了会传入源节点 ID 的旧 slot-0 重连代码。

注意事项:Issue 提到“deleted nodes come back”很可能是同一个 configure() 中断导致的表象,而不是第二个独立 bug;修复后仍需实际切换标签页、保存并重载工作流来确认。若无法立即更新,可优先尝试临时移除 js/impact-pack.js 中两行 slot-0 hack 来规避,但这属于本地修改,非官方发布方案。

问题场景

在 ComfyUI 中使用 Impact-Pack 的开关类节点(ImpactSwitch、LatentSwitch、SEGSSwitch),以及 ImpactMakeImageList、ImpactMakeImageBatch、ImpactMakeMaskList、ImpactMakeMaskBatch、ImpactMakeAnyList、CombineRegionalPrompts、ImpactCombineConditionings、ImpactConcatConditionings、ImpactSEGSConcat 等共用同一 onConnectionsChange 处理器的节点。只要这些节点的第一个输入槽(slot 0,即 input1)有连线并保存,再切换到另一个工作流标签页后切回,就会在工作流重载阶段失败。首次全新打开页面加载同一工作流可能正常,因此问题容易被隐藏到切换标签页时才暴露。

报错原文

Loading aborted due to error reloading workflow data
TypeError: t.findInputSlot is not a function
    at ComfyNode.connect (assets/promotionUtils-....js)
    at nodeType.onConnectionsChange (extensions/ComfyUI-Impact-Pack/impact-pack.js:639)
    at ComfyNode.configure ...

原因分析

问题出在 js/impact-pack.js 中旧的 slot-0 重连代码:它调用 node.connect(link_info.origin_slot, node.id, 'input1'),把源节点的数字 ID 当作目标节点传入。新版 frontend(>=1.47)在 connect() 中直接对目标调用 findInputSlot(...),传入 Number 会抛出 TypeError: t.findInputSlot is not a function。该异常从 configure() 内部向外抛出,导致整个工作流加载中止。此外,即使 ID 还能被解析,node.id 指向的也是源节点本身,连接目标应为开关节点 this,这段逻辑本身目标就不正确。由于当前 frontend 在恢复连线时会把 input1 的类型视为 '*',该分支得以进入,于是切换标签页重载路径上问题稳定复现。

环境排查

  • 确认 ComfyUI 版本,Issue 复现环境为 0.28.0,修复验证环境为 0.32.0。
  • 确认前端版本是否为 1.47 或更高,Issue 复现为 1.47.9。
  • 确认 Impact-Pack 版本,复现为 8.28.3(700821e)。
  • 检查出错工作流是否包含上述节点,并确认其 input1(slot 0)存在连线。
  • 确认问题是否只在切换工作流标签页或重载工作流时出现,而不是首次全新打开页面。

解决步骤

  1. 确认当前 Impact-Pack 是否已包含 PR #1228。若否,更新到包含该修复的版本。
  2. 该 PR 的做法是移除旧的 slot-0 重连代码,因为这行代码向 node.connect() 传入源节点 ID,导致 frontend >= 1.47 重载工作流时抛出 TypeError: t.findInputSlot is not a function。
  3. 更新后重启 ComfyUI 并重新打开浏览器页面,确保加载的是新脚本。
  4. 如暂时无法更新,可优先尝试在本地 js/impact-pack.js 中移除引发报错的两行 hack;Issue 报告者验证过,移除后下方类型传播循环在 frontend >=1.47 上仍能正确处理 slot-0 连线。这属于临时规避,后续仍应跟进官方修复。

验证方法

打开包含 ImpactSwitch 且 input1 已连线的工作流,切换到第二个工作流标签页后再切回,确认不再出现 “Loading aborted due to error reloading workflow data” 和 TypeError: t.findInputSlot is not a function;保存并重新加载工作流,确认节点删除等编辑能够保住、工作流可以正常执行。对 ImpactMakeAnyList(Make List (Any))等共用同一处理器的节点也建议做同样验证。

参考来源

ltdrdata/ComfyUI-Impact-Pack #1223

ltdrdata/ComfyUI-Impact-Pack PR #1228

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 31097

发表回复

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