跳转失败主因是语言服务未将文件识别为可分析源码;需检查状态栏语言模式是否为JavaScript/TypeScript而非Plain Text,确认项目根目录存在tsconfig.json或jsconfig.json(含baseUrl、paths及include配置),并执行TypeScript: Restart TS server。

跳转失败不是 VSCode 坏了,而是语言服务没把你的文件当“可分析的源码”处理——90% 的问题卡在这一步。
检查右下角语言模式和配置文件是否存在
VSCode 不会自动为任意 .js 或 .ts 文件启用语义跳转。它只在识别出项目上下文后才启动 TypeScript Language Server。
- 看右下角状态栏:显示的是
JavaScript还是Plain Text?如果是后者,说明文件未被语言扩展接管 - 确认项目根目录有
tsconfig.json(TS 项目)或jsconfig.json(JS 项目),哪怕最简配置也要包含:{"compilerOptions": {"moduleResolution": "node"}, "include": ["src/**/*"]} - 如果用 ESM(
type: "module"),jsconfig.json中必须设"module": "nodenext"或"module": "es2022",否则路径解析直接失效
别名路径(@/、~/)跳不进去的三大硬伤
别名本身不生效,是因为语言服务根本不知道 @/components/Button 对应哪个物理路径。
-
baseUrl缺失:只配了paths却没写"baseUrl": ".",TS 就默认以当前文件为基准解析,结果全错位 -
paths值写成相对路径:比如"@/*": ["./src/*"],但baseUrl是".",会导致解析时多拼一层./,路径爆炸 -
include没覆盖目标目录:比如"include": ["src"]漏了src/utils,那里面导出的函数在别处 import 后就“未解析”,Ctrl+Click 必然空白
重启 TS 服务比重启 VSCode 更快生效
改完 tsconfig.json 或 jsconfig.json 后,语言服务不会自动重载。缓存还在用旧配置。
- 快捷键
Ctrl+Shift+P→ 输入Restart TS server回车,几秒内完成刷新 - 不要依赖“重新加载窗口”(
Reload Window),它不一定触发 TS 服务重建 - 如果右下角 TypeScript 图标变灰,说明服务已崩溃,此时必须重启服务,不是等它自己恢复
第三方库引用为空或跳到声明而非实现
跳到 declare 或 interface 是正常行为,TypeScript 默认按类型定义优先;但“完全找不到引用”往往是索引或类型缺失导致。
- 查
@types/xxx是否安装:没装对应类型包,import进来的变量就是 any,引用关系无法建立 - 检查
node_modules是否被exclude:某些团队配置会加"exclude": ["node_modules"]到tsconfig.json,这会让 TS 服务彻底忽略所有依赖里的类型信息 - 动态构造的引用不被支持:比如
obj[methodName]、eval()、模板字符串拼接的 key,这类永远无法被静态分析捕获
真正卡住的地方从来不是快捷键记不记得住,而是语言服务有没有跑起来、include 范围有没有漏掉关键目录、以及 baseUrl 和 paths 之间有没有对齐——这三个点错一个,跳转就断链。


















