小程序端此前**没有任何类型门禁**:tsc 不检查 .vue,而 9 个页面全是 .vue, npm run build:mp-weixin 只验语法不验类型。接入 vue-tsc 后立刻抓到 17 个错误, 其中两个是真 BUG: 1. me/index.vue:写 const user = authStore.user 之后又写 user.value —— Pinia setup store 对外已把 ref 解包,user.value 恒为 undefined ⇒ **头像上传成功后写回 store 的那行是空操作**(要等冷启动才显示新头像); 且直接取值是快照、丢掉响应式。改为 computed(() => authStore.user),模板无需改动。 2. api/index.ts:CompartmentDetail 漏了后端确实会返回的 temp (routes/h5.rs 的 COMPARTMENT_REALTIME_FIELDS 第 6 项,有单测守门) ⇒ compartment-detail 页读 data.temp 报 TS2339。已按后端契约补上。 其余 12 处是宿主全局 wx 未声明(@dcloudio/types 只声明跨端 uni), 在 env.d.ts 里**只声明实际用到的两个 API**(刻意不写 [k:string]:any, 否则等于把这一层检查关掉)。 顺带清理: - 删除死页面 pages/devices/index.vue(不在 pages.json、无任何跳转引用,grep 确认); - 删除仓控板「在线/离线」徽标:cabin_boards.status **全后端没有任何写入方** (生产库实测取值只有 0),该徽标恒定显示"离线",属对用户的谎报; 协议层面也没有"仓控板在线"这个概念(TCP 长连接的是柜控板,按 IMEI 标识)。 按「柜的就显示到柜子」+「不显示推不出来的状态」去掉,并在类型上加禁止说明。 已按仓库铁律自证门禁能失败:植入 export const probe: number = 'x' → exit 2;撤销 → exit 0。
29 lines
879 B
JSON
29 lines
879 B
JSON
{
|
|
"name": "mp-uniapp",
|
|
"version": "1.0.0",
|
|
"private": true,
|
|
"scripts": {
|
|
"build:mp-weixin": "uni build --platform mp-weixin",
|
|
"typecheck": "vue-tsc --noEmit -p tsconfig.json"
|
|
},
|
|
"dependencies": {
|
|
"@dcloudio/uni-app": "3.0.0-4060620250520001",
|
|
"@dcloudio/uni-app-plus": "3.0.0-4060620250520001",
|
|
"@dcloudio/uni-components": "3.0.0-4060620250520001",
|
|
"@dcloudio/uni-mp-weixin": "3.0.0-4060620250520001",
|
|
"jsqr": "^1.4.0",
|
|
"pinia": "^2.1.7",
|
|
"vue": "^3.4.21"
|
|
},
|
|
"devDependencies": {
|
|
"@dcloudio/types": "^3.4.8",
|
|
"@dcloudio/uni-automator": "3.0.0-4060620250520001",
|
|
"@dcloudio/uni-cli-shared": "3.0.0-4060620250520001",
|
|
"@dcloudio/uni-stacktracey": "3.0.0-4060620250520001",
|
|
"@dcloudio/vite-plugin-uni": "3.0.0-4060620250520001",
|
|
"typescript": "^5.4.5",
|
|
"vite": "^5.2.8",
|
|
"vue-tsc": "^2.2.12"
|
|
}
|
|
}
|