
TypeError: ‘NoneType’ object is not iterable
快速结论:该报错通常出现在 Stable Diffusion WebUI Forge 的图生图或 ControlNet 调用链中,优先排查 ControlNet 单元参数中是否传递了 None 值,尤其是 ControlNet 的 input_mode 或 image 字段。
问题场景
用户在运行 Stable Diffusion WebUI Forge 进行图生图操作时,触发了此错误。报错发生在 call_queue.py 的 f 函数中,该函数尝试 list(func(*args, **kwargs)) 但函数返回了 None。根据 Issue 正文,用户传递了多个 ControlNetUnit 参数,其中大部分处于 enabled=False 状态,module='None',model='None',image=None。
报错原文
Error completing request
*** Arguments: ('task(rz36hruay0xiraq)', ... ControlNetUnit(input_mode=, ..., enabled=False, module='None', model='None', weight=1, image=None, ...) ...) {}
Traceback (most recent call last):
File "C:\Users\Stepan\Downloads\webui_forge_cu121_torch231\webui\modules\call_queue.py", line 74, in f
res = list(func(*args, **kwargs))
TypeError: 'NoneType' object is not iterable
原因分析
可能原因:func(*args, **kwargs) 返回了 None,而 list() 无法迭代 None。这通常意味着生成函数在执行过程中提前退出或发生了未捕获的异常,导致没有返回有效的图像生成结果。在 Issue 评论中,用户提到“I fixed that error but i have new problem”,暗示该错误可能与 ControlNet 模块的配置冲突有关,比如禁用的 ControlNet 单元仍被错误地传递了 None 类型的 image 或 model,导致底层的处理流程返回 None。
环境排查
- Stable Diffusion WebUI Forge 版本(Issue 用户使用的是
webui_forge_cu121_torch231捆绑包,版本未知) - Python 版本(建议 3.10 或 3.11)
- CUDA 版本(用户捆绑包为 cu121,即 CUDA 12.1)
- ControlNet 相关扩展版本是否与 WebUI Forge 兼容
- 检查是否在 ControlNet 面板中意外添加了空白或无效的 ControlNet 单元
解决步骤
- 检查 ControlNet 面板:确保所有处于
enabled=False的 ControlNet 单元被完整移除,而不是仅设置为禁用。在 WebUI Forge 的 ControlNet 界面中,点击“删除”按钮移除多余的空白单元。 - 如果使用了多个 ControlNet 单元,且大多数处于禁用状态,建议清空 ControlNet 输入,只保留实际要使用的单元。
- 可优先尝试:重启 WebUI Forge 并重新加载模型,有时是 ControlNet 扩展的临时状态导致返回空值。
- 检查自定义脚本(如 ADetailer、MultiDiffusion 等)是否有冲突。Issue 参数中包含多个高级脚本参数(如
ADetailer相关选项),可以尝试在“设置”中暂时禁用所有扩展,只保留核心功能进行测试。 - 如果问题持续出现,可以查看 WebUI 控制台输出,确认在报错之前是否有其他错误日志(例如模型加载失败或内存不足)。
验证方法
执行一次简单的文生图(不使用 ControlNet 和任何扩展),确认能否正常生成。如果成功,则逐步启用扩展和 ControlNet,定位具体触发问题的组合。如果简单的文生图也失败,则问题可能出在核心环境(如模型文件损坏或依赖冲突)。



