Lesson 07 · 凭据与外部服务
这个项目最反直觉的一条链路。不懂它,你会把「没登录」误判成「代码有 bug」。
这条链路已经在架构图 FIG.03 里画出来了,课 01 也提过一次。这一课把它讲透:每一段的代码在哪、失败时的表现是什么、怎么验证。
排在发布课之前,因为发布出的绝大多数问题根源都在这条链上,而不在发布逻辑本身。
.env 里只有 11 个键。源码用到约 50
个 VITE_*,差额从哪来
initEnv() 逐行读。src/utils/extend/envOption.ts:8 ——
userInfo.game 的每个字段被写到哪个键
replaceChannelInUrls() 把 Jenkins job 名里的
channel 换成实际渠道 —— 这是「job 找不到」类问题的高发点
GameEvn.ts:44-49 的深度
watch、刷新后 init() 从 localStorage
读回,以及凭据明文存储的风险
getPcode()、SVN 的 SvnOption()、Jenkins 的
initConfig()、COS 的 COS_Handler.init()
components/confirmServer/ 与各页面里那段「按版本拼
_dev 后缀」的重复代码
try/catch
返回 false、请求带空 pcode 被服务端拒 —— 各自的排查手法
JSON.parse(localStorage.getItem("GameENV")),把打出来的键和 envOption.ts 里的赋值逐条对上
localStorage.removeItem("GameENV")
然后刷新,观察哪些功能开始静默失效 ——
这是理解依赖传播最快的方式(做完重新登录即可恢复)
src/utils/extend/envOption.ts 整个读一遍,它只有 80
行左右