根本原因是语言服务器(LSP)未正常工作或Error Lens未获取到诊断数据;它不分析代码,仅显示LSP提供的error/warning等诊断信息。

为什么 Error Lens 装了但行尾没显示错误?
根本原因通常是语言服务器(LSP)没正常工作,或者 Error Lens 没拿到诊断数据——它自己不分析代码,只负责“贴标签”。常见现象是:保存后有波浪线、问题面板里有报错,但行尾就是空的。
- 检查右下角状态栏是否显示
JavaScript (Volar)/Python (Pylance)等活跃语言服务,没显示说明 LSP 启动失败 - 确认已安装对应语言的官方扩展(如
ms-python.python、octref.volar),仅装Error Lens不够 - 打开命令面板(
Ctrl+Shift+P),运行Developer: Toggle Developer Tools,看 Console 里有没有Failed to activate language client类报错 -
Error Lens默认只显示error和warning级别,info级诊断需手动开启:"errorLens.showInfo": true
errorLens.diagnosticLevel 和 errorLens.showInGutter 到底怎么配?
这两个配置控制“显示什么”和“在哪显示”,容易混淆。前者决定过滤哪些诊断级别,后者只是开关行尾图标(不是文字);真正控制行尾文字的是 errorLens.showInline。
-
"errorLens.diagnosticLevel": "error"→ 只显示 error,warning 和 info 全部隐藏(即使开了showInline也不显示) -
"errorLens.showInline": true→ 必须开,否则行尾永远空白;默认是true,但某些旧版本或重置设置后可能被关掉 -
"errorLens.showInGutter": false→ 关掉左侧 gutter 里的小图标,不影响行尾文字;设为true是冗余的(默认就开) - 推荐最小配置:
"errorLens.showInline": true,<br>"errorLens.diagnosticLevel": "warning"
(兼顾实用性和信息量)
TypeScript/JS 项目里 Error Lens 显示不全或延迟高?
本质是 TypeScript 语言服务响应慢或诊断缓存未命中。VSCode 内置 TS Server 和你项目里 node_modules/.bin/tsc 版本不一致时最明显——比如项目用 TS 5.3,VSCode 用 TS 4.9,就会漏报 const 类型推导错误。
- 在 TS 文件里按
Ctrl+Shift+P→ 运行TypeScript: Select TypeScript Version,选Use Workspace Version - 关闭
"typescript.preferences.includePackageJsonAutoImports": "auto",这个选项会触发额外的 node_modules 扫描,拖慢诊断 - 如果用
tsconfig.json的"composite": true,确保所有引用项目都已构建(tsc -b),否则跨项目类型检查会失效 - 禁用其他诊断类插件(如
ESLint的eslint.enable设为false),避免多个来源竞争覆盖同一行的诊断
Python 报错只显示 undefined 或截断?
这是 Pylance 或 Ruff(如果用了)输出格式和 Error Lens 解析不匹配导致的。典型表现:行尾只写 undefined,或者错误消息被砍掉前半截(比如只剩 ...e 'list' object is not callable)。
- 优先用 Pylance:确认已安装
ms-python.pylance,且"python.languageServer": "Pylance"(不是Default或Jedi) - 如果用 Ruff,升级到 v0.5.0+,并配置
ruff.lsp.enable为true;旧版 Ruff LSP 输出字段名是message,新版才是标准diagnostic.message - 检查
Error Lens设置里"errorLens.trimMessage": false,设为false防止自动截断(默认是true) - 遇到
undefined,打开 VSCode 设置搜索errorLens.messageFormat,改成"{message} [{source}] ({code})",强制显式拼接字段
实际用起来,最常卡住的不是配置,而是语言服务本身没活过来——先盯住状态栏那个小图标,再调配置。行尾文字显示逻辑很直白,但上游数据断了,再怎么调 showInline 都是白搭。











