根本原因是语言服务器未解析自定义模块:python需pyrightconfig.json配置include/extrapaths,ts需tsconfig.json正确设置baseurl、paths和moduleresolution,且import语句必须无报错才能触发hover。

为什么自定义模块悬停不显示文档
根本原因不是“没开悬浮提示”,而是语言服务器压根没解析到你的模块——它连模块是否存在都不知道。VSCode 的 hover 依赖完整的语义索引,而自定义模块路径(比如 ./utils/helpers 或 mylib)若未被 Python/TypeScript 的语言服务识别为有效导入源,悬停时就只会显示 any、unknown 或干脆空白。
常见断点:
- Python:模块路径没加进
sys.path,或没配置pyrightconfig.json的include/extraPaths - TypeScript:缺少
tsconfig.json的"baseUrl"和"paths",或"moduleResolution": "node"未启用 - JS/TS 文件右下角显示
Plain Text,而非TypeScript—— 这时连基础语法高亮都没有,更别说 hover
Python 自定义模块悬停:pyrightconfig.json 比 sys.path 更可靠
sys.path.append() 只影响运行时,对语言服务无效;真正让 Pylance / Pyright 在悬停时识别并跳转自定义模块,得靠配置文件。
在项目根目录建 pyrightconfig.json,内容示例:
{
"include": ["src/**/*", "mylib/**/*"],
"extraPaths": ["mylib", "./src/libs"]
}
关键点:
-
include告诉 Pyright 哪些路径要参与类型检查和索引(必须存在且可读) -
extraPaths是模块解析的“额外根目录”,等价于把它们加进PYTHONPATH,Pylance 悬停时才能找到__init__.py和 docstring - 路径必须是相对于
pyrightconfig.json的相对路径,不能用~或环境变量 - 改完后需保存文件 + 等待右下角状态栏出现
Pyright: Ready,不是重启 VSCode 就生效
TypeScript 路径别名悬停失效?检查 tsconfig.json 的 baseUrl + paths
如果你写了 import { foo } from '@utils/bar',但悬停只显示 any,大概率是 tsconfig.json 没配对。
正确配置示例:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@utils/*": ["src/utils/*"],
"@types/*": ["types/*"]
},
"moduleResolution": "node"
}
}
注意:
-
baseUrl必须显式设为"."或具体路径,不能省略 -
paths的 key 必须带/*,value 也必须带/*,否则路径映射不生效 - VSCode 不读取
jsconfig.json的paths(只用于 JS 项目基础补全),TS 项目必须用tsconfig.json - 修改后需关闭再重开 TS 文件,或执行命令
TypeScript: Restart TS server
引用查看(Shift+F12)查不到自定义模块调用?先确认模块是否被导出
悬停能显示文档 ≠ 引用能被查到。引用分析依赖“可导出符号”的静态可见性。
Python 中:
- 模块内必须有
__all__ = ["MyClass", "helper_fn"],或函数/类顶部有def helper_fn(): ...且没被if False:包裹 - 没写
__all__时,Pylance 默认只索引以字母开头、非下划线开头的顶层符号
TypeScript/JavaScript 中:
- 必须用
export function xxx()或export default class X,const xxx = () => {}不加export就是私有,其他文件里即使能运行时访问,Shift+F12也查不到 - 动态拼接导入(
import(`./${name}.ts`))或require('./' + name),引用关系直接丢失 - 未保存的文件中写的调用,不会进入引用索引 —— 必须
Ctrl+S后再试
最常被忽略的一点:路径别名和自定义模块的 hover 文档,只有在 import 语句本身被正确解析后才会触发。如果 import 行报红(如 “Cannot find module”),hover 和引用功能基本都失效,得先解决红色波浪线。











