Reference Card
拿到一句模糊的报障,先判归属层。这张表逐课累积, 目前是课 01–04 的成果。
不要一上来就读业务代码。先把七个候选排除到两个以内, 再决定用什么工具。
| 层 | 它管什么 | 最快的判定动作 |
|---|---|---|
| 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 | 直接去那个系统的页面上看真实状态 |
本项目特有的强信号:没有错误信息
在多数项目里,「没报错」意味着「没出错」。 在这个项目里恰恰相反:
_buildService?.start(...) ——
客户端没初始化时静默返回 undefined
COS_Handler.init() 的 catch 直接
return false,没人检查返回值
所以:「点了完全没反应、控制台干干净净」= 优先怀疑第 1 层(凭据)。
| 症状 | 检查 | 证据 |
|---|---|---|
| 任何外部操作点了没反应 |
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:32 的 SvnOption()
|
| 上传下载失败且无提示 | VITE_COS_ACCESSKEYID / SECRET |
src/App.vue:41;init 失败被 catch 吞掉 |
| 症状 | 检查 | 证据 |
|---|---|---|
| 「列表是空的」 | 五步:①请求发了吗 ②打到哪台服 ③参数对吗 ④服务端返回了什么 ⑤凭据齐吗 | 课 02 完整版 |
| 「在测试服改的,正式服也变了」 |
localStorage.getItem('pCode') 里有没有
_dev
|
service.ts:79 的 getBaseURL() ——
没有 _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 |
| 症状 | 检查 | 证据 |
|---|---|---|
| 数据改了但界面不动 |
<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
|
| 症状 | 去哪看 |
|---|---|
| 白屏、样式错乱、按钮无响应 | DevTools 控制台(渲染层) |
| 窗口起不来、菜单快捷键失灵 | 启动 Electron 的终端(主进程) |
| 下载/解压进度条卡住 |
子进程。沿 extend/worker/*.js 的
process.send 链查
|
| dev 正常,打包后才出问题 |
主进程的路径计算。handler/ready.ts:10-20, 以及
app.asar → app.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 管理员。 不确定就写「需要确认」,不要含糊带过