VSCode「问题」面板仅显示已启用检查器报告的错误,需正确配置语言扩展、检查器开关、路径包含及源码映射;错误不显示常见于未安装扩展、语言模式错误、检查器禁用或路径未纳入;跳转失效多因诊断位置缺失或source map不匹配。

VSCode 的「问题」面板不是万能的错误收集器,它只显示当前工作区里被启用的检查器(linter / compiler)实际报告的内容——没配好工具链,面板就是空的。
为什么 Problems 面板里什么都没显示?
常见错误现象:No problems have been detected in the workspace,但代码明显有语法错误或类型问题;或者只显示部分错误,比如 TypeScript 报了错,但 console.log 拼错成 conosle.log 却不报。
- 没装对应语言的扩展:比如写 Python 却没装
Python扩展(含 Pylance),写 TS 却没装ESLint或没启用typescript.preferences.includePackageJsonAutoImports - 文件没被识别为该语言:检查右下角语言模式是否是
JavaScript而不是Plain Text;.js文件若含import但没配jsconfig.json,TS 服务可能跳过检查 - 检查器被禁用:比如
eslint.enable设为false,或项目根目录下有.eslintrc.js但没导出规则,导致 ESLint 静默失败 - 路径未纳入检查范围:VSCode 默认只检查打开的文件 +
tsconfig.json或jsconfig.json中include列出的路径,node_modules或dist下的文件不会被 lint
如何让 Problems 面板真正反映真实错误?
关键不是打开面板,而是让后端检查器持续运行并把结果推过来。操作重点在配置和触发时机。
- 确保语言服务器已启动:保存文件(
Ctrl+S)会触发大多数检查器的增量验证;也可以手动触发Developer: Toggle Developer Tools看控制台有没有Failed to load ESLint library类报错 - 检查
settings.json中的关键开关:"javascript.validate.enable": true(JS 内置校验)、"typescript.preferences.allowIncompleteClasses": false(影响 TS 错误粒度)、"eslint.packageManager": "npm"(指定包管理器避免找不到依赖) - 对多根工作区,确认每个文件夹都有自己的配置:比如一个文件夹是 Vue 项目(需
volar),另一个是纯 Node 工具脚本(需ESLint),不能只靠全局设置 - 遇到“改了代码但面板没更新”:试试关闭再重开文件,或执行命令
TypeScript: Restart TS server—— 有时语言服务卡在旧状态
Problems 面板里点不了错误跳转?
这通常不是面板的问题,而是检查器返回的诊断信息(diagnostic)缺少有效位置字段,或 VSCode 无法映射到当前打开的文件。
- 错误来自构建产物(如
dist/index.js):源码映射(source map)缺失或路径不匹配,面板能显示但无法跳转到src/下原始行 - 使用了非标准打包方式:比如用
esbuild --bundle输出单文件,且没加--sourcemap,TS/ESLint 的错误位置就指向 bundle 后的行号 - 路径大小写不一致:Windows 上文件名是
Utils.ts,但tsconfig.json的include写成utils.ts,会导致 TS 服务加载失败,进而诊断位置为空 - 编辑器缓存干扰:删除
.vscode下的ipch或cache目录(不常用),更稳妥的是关掉 VSCode,清空%APPDATA%\Code\Cache(macOS 是~/Library/Caches/com.microsoft.VSCode)
真正麻烦的是跨工具链协同:比如 ESLint 报了错,但 TypeScript 服务没启动,Problems 面板里就会混着两类来源的条目,而它们的修复方式完全不同——前者改配置或加 // eslint-disable-next-line,后者得补类型声明或改 tsconfig.json 的 lib。这时候别只盯着面板,得看每条错误末尾的小字:它标着 eslint 还是 typescript,这才是行动依据。


















