Reference Card

故障分诊表

拿到一句模糊的报障,先判归属层。这张表逐课累积, 目前是课 01–04 的成果

📋 这张表还在长

课 01–04 已经贡献了下面这些条目。课 05–09 出正文时会继续往里加 —— 表单层、路由层、凭据层、发布层各自的检查点。

它也应该是你自己的表。每遇到一个卡住你的问题, 就往里加一行:症状、最后发现是哪层、下次最快的判定方式。

第一问永远是:哪一层

不要一上来就读业务代码。先把七个候选排除到两个以内, 再决定用什么工具。

它管什么 最快的判定动作
1. 凭据 登录下发的 SVN / Jenkins / GM / COS 配置 JSON.parse(localStorage.getItem('GameENV'))
空 或缺键 → 就是它
2. 平台 Windows 专有的 exe:SVN、Python、地图工具、nginx、7-Zip 你在 macOS 上吗?涉及的是这几类功能吗?
两个都是 → 就是它,不用再查了
3. 网络 / 后端 HTTP 请求本身 Network 面板搜 cmd,看 Payload 和 Response
4. 渲染层 Vue 组件、状态、表单渲染 DevTools 控制台有没有红字
5. 主进程 窗口、菜单、系统对话框、自动更新、IPC 启动 Electron 的那个终端里有没有输出
6. 子进程 下载、解压 进度条卡住不动 → 大概率是它。 最难查,只能沿 process.send 链加日志
7. 外部服务 Jenkins、SVN 仓库、GM 服务、COS 直接去那个系统的页面上看真实状态

本项目特有的强信号:没有错误信息

在多数项目里,「没报错」意味着「没出错」。 在这个项目里恰恰相反

所以:「点了完全没反应、控制台干干净净」= 优先怀疑第 1 层(凭据)。

已积累的检查点

凭据层(课 01、课 02)

症状 检查 证据
任何外部操作点了没反应 JSON.parse(localStorage.getItem('GameENV')) 是不是空 src/utils/extend/envOption.ts:8
发布点了没反应 VITE_JENKINS_URL / USER / TOKEN 有没有值 缺任一个 → initJenkins() 建不出客户端, utils/extend/jenkins/config.ts:125
SVN 操作报没权限 VITE_SVN_USER / VITE_SVN_PASSWORD utils/extend/svn.ts:32SvnOption()
上传下载失败且无提示 VITE_COS_ACCESSKEYID / SECRET src/App.vue:41;init 失败被 catch 吞掉

网络层(课 02)

症状 检查 证据
「列表是空的」 五步:①请求发了吗 ②打到哪台服 ③参数对吗 ④服务端返回了什么 ⑤凭据齐吗 课 02 完整版
「在测试服改的,正式服也变了」 localStorage.getItem('pCode') 里有没有 _dev service.ts:79getBaseURL() —— 没有 _dev 就打正式服
「数据不对」 Payload 里的 serverId api/game/index.ts:14 有静默兜底 || getStorage('defaultServerId'), 没选服时可能是 undefined
Network 里全是一样的请求,分不清 展开 Payload 看 cmd 字段, 不是看 URL 所有业务打到 /1000y/engine/cmd; 搜 excel_modify 可筛出所有写操作
请求转两分钟才失败 正常。超时设的就是 2 分钟 src/config/axios/config.ts

渲染层(课 03、课 04)

症状 检查 证据
数据改了但界面不动 <script> 里赋值时漏了 .value? 或者解构 store 丢了响应式? 解构要用 storeToRefs()
按钮点不动 属性绑定漏了冒号?disabled="false" 是字符串,是真值 Vue 模板语法
偶尔进编辑页表单是空的,刷新就好 TableStore.init() 的 1500ms 竞态 views/ReLogin/index.vue:195-198; 机器慢时窗口更大
组件外调 store 报错 用了 useXxx() 而不是 useXxxWithOut() 拦截器、守卫、api 模块里必须用 WithOut 版
一个事件触发多次 onUnmounted 里忘了 removeListener / clearInterval 正例:src/App.vue:64:69 成对; 反例:api/login/index.ts:105 的裸 setInterval

进程层(课 01)

症状 去哪看
白屏、样式错乱、按钮无响应 DevTools 控制台(渲染层)
窗口起不来、菜单快捷键失灵 启动 Electron 的终端(主进程)
下载/解压进度条卡住 子进程。沿 extend/worker/*.jsprocess.send 链查
dev 正常,打包后才出问题 主进程的路径计算。handler/ready.ts:10-20, 以及 app.asarapp.asar.unpacked 的替换
用户报障要日志文件 electron-log 只在非 development 下初始化 (ready.ts:24-26),正式包才有

五个高频误判

你可能以为 实际上
按 URL 筛 Network 就能找到那个请求 没用。URL 基本只有一个,要看 cmd
这个页面菜单里没有,所以他没权限进 generateRoutes() 零过滤, 手敲 hash 谁都能进
「保存没反应」是保存逻辑的 bug 先查有没有选服。serverId 是 undefined 时请求照发
Mac 上 exe 报错说明环境装坏了 没坏。这个工具本来就是 Windows 优先的, Mac 上那几条链路本来就跑不通
改了 service.ts 但没生效 确认你改的不是 serviceold.ts。 同理 jenkins_old.ts

怎么写一份能交出去的结论

症状——用户原话,加上你自己复现出来的样子

复现步骤——别人照着能重现

归属层——七层里的哪一个,以及你怎么排除掉其他的

证据——file:line、请求 Payload 截图、控制台输出。 没有证据的根因等于猜测

根因——一句话说清

处置——已经做了什么 / 建议怎么做 / 有没有临时绕过办法

需要谁配合——服务端、运维、Jenkins 管理员。 不确定就写「需要确认」,不要含糊带过