TypeError: i().default_models.split is not a function

该报错通常发生在从 v0.10.x 升级到 v0.11.0 后,且旧版本中设置了多个默认模型( ui.default_models 以 JSON 数组形式存储)的场景。优先排查数据库中 ui.default_models 的存储格式是否为数组而非逗号分隔字符串。

快速结论:该报错通常发生在从 v0.10.x 升级到 v0.11.0 后,且旧版本中设置了多个默认模型(ui.default_models 以 JSON 数组形式存储)的场景。优先排查数据库中 ui.default_models 的存储格式是否为数组而非逗号分隔字符串。

适用环境:Open WebUI v0.11.0(Docker 安装),从 v0.10.2 升级;操作系统为 TrueNAS Scale;浏览器为 Waterfox 6.6.17(OIDC/Keycloak 登录仅为报告者环境细节,非复现必要条件)。

最快修复方案:暂无确认的一步修复方案。Issue 中提出但未验证的修复方向是:添加数据库迁移,将旧版 JSON 数组格式的 ui.default_models/ui.default_pinned_models 转换为逗号分隔字符串(可优先尝试)。

注意事项:该方案仅为推测,尚未在 Issue 中验证;回退到 v0.10.2 可恢复工作,但会丢失 v0.11.0 功能。使用多个默认模型本身可能并非预期行为,单次“Set as default”操作在 v0.10.x 中可能错误地累加而非覆盖默认模型。

问题场景

用户通过 Docker 从 v0.10.2 升级到 v0.11.0 后,在侧边栏点击“New Chat”按钮时,URL 虽变为 /,但旧聊天视图残留,新聊天输入框不出现,且不会发送 POST /api/v1/chats/new 请求。浏览器控制台抛出 default_models.split is not a function 异常。

报错原文

Uncaught TypeError: i().default_models.split is not a function
    Ue Chat.svelte:182
    at Chat.svelte:185
    V6 Chat.svelte:213
    Re runtime.js:761
    [Chat.svelte:182:52](https://owu.[redacted]/src/lib/components/chat/Chat.svelte)

原因分析

可能原因:升级前数据库中 ui.default_models 以 JSON 数组形式存储(例如 ["model-a","model-b"]),而 v0.11.0 的 Chat.svelte 在第 182 行直接对该值调用 .split(','),因数组没有 split 方法而抛错。该值在 v0.11.0 中被期望为逗号分隔字符串,但升级路径缺少数据格式迁移或防御性解析,导致原始数组未经转换直接到达前端。

Issue 中确认:在 fresh v0.11.0 安装下不会出现此问题;在运行中的实例中手动存储 ["model-a","model-b"] 可精确复现该症状。

环境排查

  • 检查数据库(如 SQLite 或 PostgreSQL)中 ui.default_models 字段的实际存储类型:是字符串(如 "model-a,model-b")还是 JSON 数组(如 ["model-a","model-b"])。
  • 确认 Open WebUI 版本是否为 v0.11.0(可通过 /api/version 返回 {"version":"0.11.0"} 验证)。
  • 如从 v0.10.x 升级,确认升级前是否在 Admin Settings → Models 中设置过多个默认模型。
  • 检查浏览器控制台是否仅在此场景抛出该异常,Fresh install 是否正常。

解决步骤

  1. 临时回退:将 Docker Compose 中镜像版本改回 v0.10.2,重新 docker compose pull open-webuidocker compose up -d open-webui,恢复工作状态(注意:这会回退到旧版功能)。
  2. 数据库检查:连接 Open WebUI 的数据库,查询 ui.default_models 的存储内容;确认是否为 JSON 数组格式。
  3. 手动修复(谨慎操作):若确认为数组格式,可尝试在数据库中手动将其转换为逗号分隔字符串(例如将 ["model-a","model-b"] 改为 "model-a,model-b"),然后重新加载页面。修改前务必备份数据库。
  4. 等待上游修复:Issue 已确认在 dev 分支可复现,并已打开 #28295 追踪。可关注后续版本是否加入数据库迁移或防御性解析。
  5. 补充验证(若需复现):按照 Issue 步骤,在 v0.10.2 中设置多个默认模型 → 升级 v0.11.0 → 点击 New Chat 即可复现。

验证方法

点击“New Chat”后,确认 URL 跳转到 /c/<id> 或首页正常渲染空的新聊天输入框;浏览器控制台不再出现 TypeError: i().default_models.split is not a function;网络请求中出现 POST /api/v1/chats/new 且返回成功。

参考来源

open-webui/open-webui #28123

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 18537

发表回复

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