VSCode调试Node.js慢主因是ESLint、Prettier、GitLens等onStartup插件常驻及files.watcherExclude未排除node_modules;应禁用或降级激活这些插件,配置项目级settings.json排除监听目录,并在launch.json中正确设置skipFiles和type为pwa-node。

VSCode调试Node.js慢,八成不是代码问题,而是插件在后台疯狂扫描、监听、校验——尤其ESLint、Prettier、GitLens这类默认onStartup激活的插件,一开就占内存、拖启动、卡断点命中。
哪些插件必须禁用或降级激活
ESLint、Prettier、TypeScript Server、JavaScript Booster、GitLens 这几类最常驻。它们不是“不工作”,而是“永远在准备工作中”:
- ESLint 默认监听所有
.js文件,没配eslint.options.ignorePath就会扫node_modules里的上万文件 - Prettier 的自动格式化在保存瞬间触发 AST 解析,大型项目延迟可达 300ms+
- GitLens 的
onStartup激活项会让它预加载整个仓库历史,对 monorepo 尤其致命 - TypeScript Server 若开启
typescript.preferences.includePackageJsonAutoImports,会递归解析node_modules/@types下所有声明文件
操作建议:打开命令面板 Ctrl+Shift+P → 运行 Developer: Show Running Extensions,按 CPU 占用排序;右键非必需插件 → 选 Disable (Workspace)(只关当前项目)或 Disable (Global)(全局关)。
禁用后怎么保留关键功能
全关不是目的,避免后台常驻才是核心。多数功能可改为“按需触发”:
- ESLint 改为手动运行:
npx eslint --fix src/或绑定快捷键Ctrl+Shift+P→ESLint: Fix all auto-fixable Problems - Prettier 关掉自动保存格式化:
"editor.formatOnSave": false,需要时用Shift+Alt+F手动触发 - GitLens 关闭
gitlens.codeLens.enabled和gitlens.hovers.enabled,保留右键菜单里的GitLens: Compare With等高频操作 - TypeScript 补全仍可用,但关掉自动导入:
"typescript.suggest.autoImports": false,需要时按Ctrl+Space手动唤出
为什么禁用插件后调试仍卡
插件只是表象,真正拖慢调试的是底层监听和语言服务耦合。即使插件全关,若没同步调整以下配置,launch.json 启动仍会卡顿:
-
files.watcherExclude未排除node_modules:VSCode 默认用 chokidar 监听全部文件,几万小文件变更事件直接压垮主线程 -
search.exclude漏掉**/coverage/**或**/.next/**:这些目录虽不打开,但 TypeScript Server 仍会尝试索引其中的.d.ts文件 -
skipFiles写错路径:比如写成"./node_modules/**"或"${workspaceFolder}/node_modules/**",VSCode 调试器只认相对路径模式"node_modules/**" - 用了旧版
type: "node"而非"pwa-node":只有pwa-node才真正支持skipFiles和子进程调试控制
真正卡住的从来不是某一个开关,而是插件行为、文件监听、调试协议三者叠加后的隐式开销。改完插件设置后,务必检查 .vscode/settings.json 和 launch.json 是否同步清理了那些“默认开启却没人真需要”的配置项。


















