快速结论:这个报错通常发生在把 Impact Pack 的动态类型节点(如 Control Bridge、Conditional Branch、Compare 等)放进 subgraph 后,再从输入节点接线并保存重开工作流时,ComfyUI 前端因取不到源节点对象而崩溃。优先排查 js/impact-pack.js 中 `node.outputs[…]` 未被安全判空的位置。
适用环境:Issue 中确认涉及 ComfyUI Impact Pack v8.22.2,ComfyUI 前端为当时最新 commit(8d38ea3bbf7e77ed7e7aee401b157dab211c5307)。操作系统、Python、CUDA、显卡型号在 Issue 中未明确说明。
最快修复方案:暂无确认的一步修复方案。Issue 中验证有效的做法是手动给 js/impact-pack.js 相关行加上可选链与 `?? ‘*’` 兜底(见解决步骤),但这是社区用户提供的补丁,并非官方发布版。
注意事项:该补丁只解决了前端取值崩溃,动态类型尚未被官方正式支持,输出和链接仍可能出现类型校验警告;作者在后续回复中说明已做了更稳健的修补,因此正式修复可能与此处 patch 不完全一致,升级前建议备份 js/impact-pack.js。
问题场景
用户在 ComfyUI 中使用 Impact Pack 的若干动态类型节点,把它们转换成 subgraph 并接入输入后,保存、关闭再重新打开该工作流时触发崩溃。受影响节点包括 Control Bridge(ImpactControlBridge)、ImpactConditionalBranch / ImpactConditionalBranchSelMode、ImpactCompare、Select Nth Item (Any list)(ImpactSelectNthItemOfAnyList)以及 ImpactInversedSwitch。另有用户表示 Select Nth Item (Any list) 也出现过类似问题。
报错原文
[Bug] Control Bridge inside subgraph causes workflow crash
can't access property "output", node is undefined
原因分析
可能原因是:当这些节点位于 subgraph 内部时,js/impact-pack.js 通过 `app.graph.getNodeById(link_info.origin_id)` 去取源节点并读取 `node.outputs[link_info.origin_slot].type`,此时 `node` 可能为 undefined,而部分分支没有像其他位置那样做判空检查,于是抛出 `can’t access property “output”, node is undefined` 导致工作流崩溃。
提出补丁的用户同时指出,js/impact-pack.js 中另有一处(约 L584-L587)已经做了类似的判空判断,因此这些崩溃点可能是被遗漏,而非有意设计。其理解是:脚本执行时无法从 subgraph 中取回某个输入的类型。
环境排查
- 确认 ComfyUI Impact Pack 版本,Issue 中复现版本为 v8.22.2。
- 确认 ComfyUI 前端 commit,Issue 中测试时为 8d38ea3bbf7e77ed7e7aee401b157dab211c5307。
- 确认 js/impact-pack.js 中相关行是否仍为未判空的 `node.outputs[…]` 写法,重点检查约 283、309、327、351、408 行附近。
- 确认崩溃是否只在“节点被放进 subgraph 且已接入输入”这一条件下出现,普通画布内直接使用是否正常。
- Python、PyTorch、CUDA、显卡型号在 Issue 中未给出,暂不需要作为判断依据。
解决步骤
- 备份 js/impact-pack.js,便于回退。
- 找到文件中处理上述节点类型赋值的分支,将未判空的 `node.outputs[…]` 改为可选链写法,并在取不到类型时用 `’*’` 兜底。
- 参考社区补丁,对应位置大致为:
Line 283(ImpactControlBridge):`slot_type = node?.outputs[link_info.origin_slot]?.type ?? ‘*’;`
Line 309(ImpactConditionalBranch / ImpactConditionalBranchSelMode):`slot_type = node?.outputs[link_info.origin_slot].type ?? ‘*’;`
Line 327(ImpactCompare):`let slot_type = node?.outputs[link_info.origin_slot].type ?? ‘*’;`
Line 351(ImpactSelectNthItemOfAnyList):`slot_type = node?.outputs[link_info.origin_slot].type ?? ‘*’;`
Line 408(ImpactInversedSwitch):`let origin_type = node?.outputs[link_info.origin_slot]?.type;` - 保存 js/impact-pack.js 后重启或刷新 ComfyUI 前端,使脚本重新加载。
- 若运行中出现类型校验警告,属于补丁用户已知的残留现象,动态类型尚未被官方正式支持。
如果不想手动改源码,可优先尝试回退到未受影响的旧版本,或等官方发布包含该修复的版本;Issue 中未给出对应版本号,因此这里不作具体版本推荐。
验证方法
按 Issue 的复现路径重新操作:新建工作流 → 插入受影响的动态类型节点(例如 Control Bridge)→ 转换为 subgraph → 将输入节点连接到 value 槽位 → 保存工作流 → 关闭工作流 → 重新打开该工作流。若不再抛出 `can’t access property “output”, node is undefined` 且工作流正常加载,即视为修复生效。应用补丁的用户反馈节点输出与链接未出现类型问题,但仍有动态类型相关的类型校验警告。
参考来源
ltdrdata/ComfyUI-Impact-Pack #1076
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。
![[Bug] Ollama hardcodes Gemma 4 image token budget (max_soft_tokens=280), breaking OCR on high-resolution images](https://www.chat-gpts.plus/wp-content/uploads/2026/09/17152-d9c601c0-1-768x403.jpg)
![[Request] add display "discrete_flow_shift", "timestep_sampling"](https://www.chat-gpts.plus/wp-content/uploads/2026/09/2383-e76fac8c-768x403.jpg)
![[QUESTION] - Anima LoRA training params](https://www.chat-gpts.plus/wp-content/uploads/2026/09/2363-c9b8ad85-768x403.jpg)