快速结论:这个报错出现在管理员打开 Open WebUI 后台的 Admin Settings → Images 页面时。ComfyUI 工作流节点配置(COMFYUI_WORKFLOW_NODES 或 IMAGES_EDIT_COMFYUI_WORKFLOW_NODES)缺失、为 null 或不是数组时,onMount 中未加保护的 .find() 调用会抛异常,导致整个 Images 标签页渲染失败。优先排查数据库 config 表中这两项的实际存储值。
适用环境:Issue 中确认的环境为 Open WebUI v0.12.4(dev 分支 7b303cf49 上同样存在)、Docker 部署、Ubuntu 24.04、Docker 27.x;浏览器为 Chromium 系,但因异常发生在客户端 JS 的 onMount 中,问题与浏览器无关。未涉及 Ollama。
最快修复方案:暂无确认的一步修复方案。Issue 中作者通过 sqlite3 手工修复 config 表中损坏的记录才恢复了该页面;代码层面的 Array.isArray 守卫修复尚处于提议阶段,未合并。
注意事项:直接改数据库属于高风险操作,操作前务必先备份。Issue 中列出的源码修复只是作者的提议(PR #33191 已被关闭),在合并发布前不能视为官方方案;作者也未在 dev 构建上做过浏览器实测。
问题场景
用户使用 Open WebUI 的 ComfyUI 图像引擎,进入 Admin Settings → Images 时标签页打不开,弹出错误 toast,浏览器控制台报错。触发条件是数据库中保存的 COMFYUI_WORKFLOW_NODES 或 IMAGES_EDIT_COMFYUI_WORKFLOW_NODES 配置行缺失、值为 null,或是非数组结构。由于异常在 onMount 阶段抛出,整个标签页无法渲染,管理员原本用来修改这些配置的字段也一并不可用,实例因此在 UI 层面卡死。
报错原文
Uncaught (in promise) TypeError: Cannot read properties of null (reading 'find')
at Images.svelte:269
原因分析
最可能的原因是 src/lib/components/admin/Settings/Images.svelte 中对两个配置键的访问没有做类型校验。按 Issue 给出的 dev 版源码,第 269 行与第 303 行直接调用 .find():
const n = config.COMFYUI_WORKFLOW_NODES.find((n) => n.type === node.type) ?? node;
config.IMAGES_EDIT_COMFYUI_WORKFLOW_NODES.find((n) => n.type === node.type) ?? node;
当配置值为 null 时,.find() 即在 null 上调用,抛出 TypeError。同一路径上还有两处未加保护的访问会放大问题:某行缺少 node_ids 时,n.node_ids.join(',') 会抛错;saveHandler 中调用 node.node_ids.trim(),当该值本身已是数组(恰是该函数回写的数据结构)时同样会抛错。以上判断均来自 Issue 作者对源码的阅读和线上复现。
环境排查
- Open WebUI 版本:确认是否为 v0.12.4 或 dev 分支 7b303cf49 附近版本。
- 部署方式:Docker(Issue 中为 Docker 27.x)。
- 系统:Ubuntu 24.04。
- 图像引擎是否为 ComfyUI,以及 Admin Settings → Images 是否可打开。
- 浏览器控制台是否有
TypeError: Cannot read properties of null (reading 'find'),报错位置是否指向Images.svelte第 269 或 303 行。 - 数据库
config表中images.comfyui.workflow.nodes等相关键的值为null、缺失还是非数组。
解决步骤
- 先备份 Open WebUI 的数据库文件或数据卷,避免改坏后无法回滚。
- 进入容器或宿主机上的 Open WebUI 数据目录,用
sqlite3打开数据库。 - 检查
config表中 ComfyUI 工作流节点相关记录,确认是否存在值为'null'、缺失或结构非数组的行。 - 参考 Issue 中的复现语句定位目标键(示例为把值置为
null):UPDATE config SET value = 'null' WHERE key = 'images.comfyui.workflow.nodes'; - 将被破坏的值修正为合法的 JSON 数组(例如
[]或原本正确的节点映射),使页面能以空/默认映射状态加载。 - 保存后刷新页面,重新打开 Admin Settings → Images。可优先尝试从 UI 中重新保存一次配置,让
saveHandler回写为规范结构。 - 如需根治,可关注上游对
Images.svelte的修复:保护两个数组访问(Array.isArray)、在 join 前为缺失的node_ids提供[]默认值、保存时同时接受字符串与数组形式的node_ids。该修改尚未合并,属于提议方案。
验证方法
刷新页面后 Admin Settings → Images 能正常渲染,不再弹出错误 toast;浏览器控制台不再出现 TypeError: Cannot read properties of null (reading 'find');在页面中修改并保存节点映射后,重启或重新加载仍可正常打开该标签页,且 config 表中的值保持为合法数组结构。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。
![[Bug] Starred Apps API returns empty permission_keys](https://www.chat-gpts.plus/wp-content/uploads/2026/10/42807-9b211237-768x403.jpg)
![[Bug]: Abnormally bad performance on AMD ROCM gfx1030 (W6800, V620, 6900XT 6800XT)](https://www.chat-gpts.plus/wp-content/uploads/2026/10/38107-c0716f30-768x403.jpg)
![[Bug]: persistent_topk silently drops top-k candidates when many values share a coarse histogram bin](https://www.chat-gpts.plus/wp-content/uploads/2026/10/51782-b37011fe-768x403.jpg)