Repository navigation
multi2api v1.9.16
v1.9.16
修一个用户可见的功能中断:渠道页「新增渠道 → 保存」什么都不发生。
修了什么
控制台里是这句:
Uncaught (in promise) ReferenceError: key is not defined
at save (channels:1595)
webui-channels.html 的 save() 里有这么一行:
if (!editing && !key) { err.textContent = 'API Key 必填(新增时)'; return; }key 从来没有声明过 —— 它本该判上面刚解析出来的 rawKeys 数组。从 T6 首次落地
(29bb9c4)起就这样。
为什么一直没被发现:编辑已有渠道时 !editing 短路为 false,这一行根本不执行;
只有新建渠道才会走到。而 verify_inline_script_syntax 只证明"能被解析"
(语法本身是对的),任何静态断言也看不见"运行期才炸的未定义标识符" ⇒
典型的"点了没反应"。
现在改判 !rawKeys.length,并把来龙去脉写进代码注释。
新增回归判据
tests/frontend/verify_channels_save.js(已注册进 run_frontend_suites 的 PROBES):
自己起隔离实例 → 建管理员 → 打开 /ui/channels → 点「新增渠道」→ 填 name/base/key →
点「保存」,断言 8 条:
- 全程零未捕获异常(
ReferenceError就是这条缺陷的指纹) - 弹窗关闭、空态行被真实数据行替换、名字出现在表格、表单无残留错误
- 后端
/admin/channels确实多了一条
(写这条探针时我自己还踩了个假红:拿"行数 +1"当判据 —— 空池时 tbody 里那一行是
空态行,保存成功后它被真实行替换,行数仍是 1。改成判"空态文案消失"。)
升级提示
页面走 go:embed,升级后 Ctrl+F5 硬刷新;渠道页是 iframe,必要时右键「重新加载框架」。