yuetsh
8600f8143a
fix(MaxKB): 「启用 MaxKB」开关在生产构建下拦不住脚本
vite 的 inject-maxkb 插件把 `<script src>` 写进 index.html 的 head,于是构建
产物在 Vue 启动之前就把第三方挂件拉下来执行了。App.vue 的 useMaxKB() 那条运行时
路径只能事后把标签和 `[id^="maxkb-"]` 的 DOM 删掉 —— 代码早跑完了。表现就是后台
把开关关掉、刷新,挂件的副作用照旧(其中之一是它自带的性能上报在每个页面抛
`Cannot read properties of undefined (reading 'startTime')`,堆栈全是 <anonymous>
因为它 bootstrap 时又 eval 了一层),而且关不掉。
改成只留运行时那一条路:
- 删掉 inject-maxkb 插件,index.html 不再带这个 script 标签。原地留注释说明
为什么不能加回去。
- config store 的 enableMaxkb 默认值从 true 改成 false。默认 true 的话
getConfig() 还没回来挂件就已经加载了,服务端说「关」依然晚一步。代价是配置
拿不到时挂件不出现 —— 第三方脚本 fail closed 是对的方向。
- URL 为空的兜底从 vite 插件挪进 loadMaxKBScript,否则会拿 undefined 当 src。
验证:headless chromium 走 CDP 记录网络请求。
- dev(5173):enable_maxkb=false → 0 个请求、0 个 script 标签;改成 true →
发出 embed 请求、head 里 1 个标签。
- 生产构建(bun run build 后把 dist 静态跑起来、/api 转发到后端):同样两种
配置下分别是 0 和 1。构建出来的 index.html 里已经没有 maxkb 的 script 标签,
只剩原本就在源文件里的那行 maxkbMaskTip。
MaxKB 脚本自身那个 startTime 报错是它自己的 bug,本次只保证「关得掉」,没去
动第三方代码。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-27 00:26:54 -06:00
..
2026-08-26 10:08:30 -06:00
2026-08-26 07:55:47 -06:00
2026-08-27 00:26:54 -06:00
2026-08-26 10:08:30 -06:00
2026-08-25 14:04:10 -06:00
2026-08-26 09:09:26 -06:00
2026-08-06 21:18:16 -06:00
2026-08-25 14:04:10 -06:00
2026-08-06 21:18:16 -06:00
2026-08-07 06:48:20 -06:00