Lesson 07 · 凭据与外部服务

钥匙链:登录如何点亮 SVN / Jenkins / COS

这个项目最反直觉的一条链路。不懂它,你会把「没登录」误判成「代码有 bug」。

📋 这一课还没写正文,这是大纲

课 01–04 已经出正文,够你把项目跑起来、看懂一次请求、看懂页面和状态。 05–09 属于「能独立干活」阶段,需要可安全操作的 SVN 工作副本与 Jenkins job —— 这条正是「必须问人」清单的第一项才能写得可靠。

下面的目录不是占位符 —— 每一条都已经在源码里核对过入口, 你现在就可以照着自己去读

为什么排在这个位置

这条链路已经在架构图 FIG.03 里画出来了,课 01 也提过一次。这一课把它讲透:每一段的代码在哪、失败时的表现是什么、怎么验证。

排在发布课之前,因为发布出的绝大多数问题根源都在这条链上,而不在发布逻辑本身。

前置

会讲什么

  1. 为什么 .env 里只有 11 个键。源码用到约 50 个 VITE_*,差额从哪来
  2. initEnv() 逐行读。src/utils/extend/envOption.ts:8 —— userInfo.game 的每个字段被写到哪个键
  3. 渠道名替换那一段。replaceChannelInUrls() 把 Jenkins job 名里的 channel 换成实际渠道 —— 这是「job 找不到」类问题的高发点
  4. 落盘与恢复。GameEvn.ts:44-49 的深度 watch、刷新后 init() 从 localStorage 读回,以及凭据明文存储的风险
  5. 四个消费端各自怎么取。axios 的 getPcode()、SVN 的 SvnOption()、Jenkins 的 initConfig()、COS 的 COS_Handler.init()
  6. 选服如何改写 pcode。components/confirmServer/ 与各页面里那段「按版本拼 _dev 后缀」的重复代码
  7. 静默失败的三种形态。可选链吞掉调用、try/catch 返回 false、请求带空 pcode 被服务端拒 —— 各自的排查手法
  8. 三档评级。服务端下发配置(✅ 思路对)、凭据明文进 localStorage(❌)、静默失败(❌)、每个页面各自重复拼 pcode(⚠️ 应该收敛成一个函数)

学完之后你应该能

在正文出来之前,你可以先做这些