VSCode 实现实时错误检查的关键是确保语言服务正确加载项目规则:Node.js 项目需本地 eslint 或 TypeScript 服务正常运行,配置文件(如 .eslintrc.js)被识别,包管理器设置一致,tsconfig.json/jsconfig.json 存在且配置合理,并启用对应语言服务验证。

VSCode 要实现实时错误检查,核心不是装一堆插件,而是让语言服务能正确加载并读到项目规则——Node.js 项目里,这基本等价于 eslint(或 typescript 内置检查)在本地跑起来、且配置文件被识别。
为什么改了 .eslintrc.js 还不报错?
VSCode 默认可能调用全局 eslint,而你项目里装的是本地版本。离线或环境不一致时,它就静默失效。
- 打开 VSCode 设置(
Ctrl + ,),搜eslint.packageManager,设为和项目一致的包管理器(npm/pnpm) - 右下角点 ESLint 图标,如果显示
Using globally installed ESLint,说明没走本地 —— 执行Developer: Reload Window强制重载 - 确保项目根目录有
package.json,且已运行过npm install eslint @typescript-eslint/parser --save-dev(离线前就得装好) - 别用
eslint.config.js(新格式),VSCode 插件对它的支持仍不稳定;优先用.eslintrc.js并导出对象:module.exports = { rules: { ... } }
断点能停,但代码里没波浪线?检查 language server 是否启用
实时错误检查依赖 TypeScript 或 JavaScript 语言服务,不是靠调试器启动的。它默认开启,但容易被覆盖或卡住。
- 确认当前文件右下角语言模式是
JavaScript或TypeScript,不是Plain Text—— 点击它可手动切换 - 按
Ctrl + Shift + P输入Developer: Toggle Developer Tools,看 Console 里有没有Failed to start language server类报错 - 检查
settings.json中是否误关了:"javascript.validate.enable": true和"typescript.preferences.includePackageJsonAutoImports": "auto" - 大型项目可加
"typescript.suggest.autoImports": false防卡顿,但别关整个 validate
TS 项目写 import 报错,但编译又没问题?sourceMap 不是唯一问题
TypeScript 的实时检查不仅看 tsconfig.json,还依赖 VSCode 是否识别了类型定义和模块解析逻辑。
-
tsconfig.json必须有"compilerOptions": { "moduleResolution": "node", "esModuleInterop": true, "skipLibCheck": true },否则import会标红 - 确保项目根目录存在
jsconfig.json(JS 项目)或tsconfig.json(TS 项目),哪怕只是空对象{}—— 没这个文件,VSCode 可能退化为基础语法检查 - 如果用了
paths别名,必须在tsconfig.json里配"baseUrl": "./",否则路径跳转和类型提示全挂 - 重启 TS Server:按
Ctrl + Shift + P→TypeScript: Restart TS server,比重启 VSCode 更快生效
最容易被忽略的一点:VSCode 的实时检查是“按文件触发”的,它不会主动扫描 node_modules 或未打开的文件夹。如果你只打开了 src/utils.ts,但错误实际来自 src/config/index.js 且该文件没被打开,那波浪线就不会出现——这不是 bug,是设计使然。


















