فهرست منبع

fix(vite): 补 Vue 编译期特性开关 define(修课酬方案页 __VUE_PROD_DEVTOOLS__ 未定义致菜单点击无响应)

Q 1 ساعت پیش
والد
کامیت
e4148d43f2
1فایلهای تغییر یافته به همراه14 افزوده شده و 0 حذف شده
  1. 14 0
      vite.config.ts

+ 14 - 0
vite.config.ts

@@ -85,6 +85,20 @@ for (const api of VUE_APIS) defineMap[api] = `Vue.${api}`;
 for (const api of VUE_ROUTER_APIS) defineMap[api] = `VueRouter.${api}`;
 for (const api of PINIA_APIS) defineMap[api] = `Pinia.${api}`;
 
+/**
+ * Vue 编译期特性开关(SFC 编译器 / @vitejs/plugin-vue 产物会引用这些裸标识符)。
+ *
+ * 必须在此显式 define,原因:本项目框架层全走 UMD 全局(index.html <script> 自托管),
+ * UMD 构建不在 window 上声明这些 flag。若某条编译产物(尤其复杂模板的 render 函数)
+ * 输出 `if (__VUE_PROD_DEVTOOLS__) {…}` 分支,而 define 未内联 → 浏览器把裸标识符当
+ * 全局变量求值 → `ReferenceError: __VUE_PROD_DEVTOOLS__ is not defined`(仅命中该分支
+ * 的页面白屏/无响应,其余页面正常)。
+ * 生产语义:prod 构建关闭 devtools 钩子与 dev 告警 → 全部置 false。
+ */
+defineMap.__VUE_OPTIONS_API__ = 'true'; // 使用 Options API(EP 组件均为 Options API)
+defineMap.__VUE_PROD_DEVTOOLS__ = 'false'; // prod 不启用 devtools 钩子(与 prod UMD 一致)
+defineMap.__VUE_PROD_HYDRATION_MISMATCH_DETAILS__ = 'false'; // 非 SSR 项目,关闭水合差异详情
+
 export default defineConfig(({ command, mode }) => {
   // 契约 §4 四层口径(v0.1.24 定稿):所有对外请求 = /api + 相对路径,无一例外;
   // 前端调用路径自带 /api,vite rewrite 无条件去前缀,后端路由一律不含 /api。