8600f8143ab0b90ed6d210f4f62f456d587e8e1b
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>
Description
No description provided
Languages
TypeScript
58.5%
Vue
39.6%
Shell
1.3%
Dockerfile
0.5%