VSCode调试Node.js断点失效主因是launch.json中program字段配置错误:必须为完整.js文件路径,如"${workspaceFolder}/src/index.js";TypeScript需先编译或配preLaunchTask;含空格路径须加双引号;launch适合简单脚本,attach更适框架项目且需手动启动并端口一致;console设为"integratedTerminal"可显式输出;环境变量问题需从终端启动code .(Mac用nvm时)或检查PATH配置。

VSCode 调试 Node.js 不需要插件,但 launch.json 配错一个字段,断点就变灰、F5 按下没反应、变量面板空着——问题几乎全出在配置细节上。
launch.json 中 program 字段必须指向可执行的 .js 文件
这是断点不生效的头号原因。VSCode 不会帮你解析相对路径或自动补全扩展名。
-
program值必须是完整路径,且以.js结尾;写成"./src/index"或"src/index.ts"都会失败 - 推荐用变量:
"${workspaceFolder}/src/index.js",避免硬编码路径 - 如果入口是 TypeScript,不能直接指向
.ts文件——得先编译,或配preLaunchTask,否则报Cannot launch program because corresponding JavaScript cannot be found - 路径含空格?必须用双引号包裹,且 VSCode 不支持转义,建议整个项目路径避开空格
launch 和 attach 两种模式怎么选
不是所有场景都适合 request: "launch"。它会新建进程,但很多 Node 应用依赖启动时的环境变量、端口占用状态或子进程行为。
使用 JSON Schema 验证 JSON 数据,从示例 JSON 生成 schema,并将其转换为 TypeScript 接口、Python 数据类或 Markdown 文档。
-
launch适合:本地脚本、CLI 工具、简单 HTTP 服务(如纯http.createServer) -
attach更稳:Express/Koa/Nest 等框架项目、用npm run dev启动的服务、Docker 容器内运行的进程 - 用
attach时,必须先手动运行:node --inspect-brk ./bin/www(--inspect-brk让它停在第一行,方便你连上再开始) -
launch.json中对应配置的port必须和--inspect指定的一致,默认是9229;改了端口却没同步改配置,就会卡在 “Connecting…”
调试时控制台输出乱、看不到日志?检查 console 配置
默认调试输出可能藏在内部控制台里,而你只盯着集成终端看——两者不是一回事。
- 加这一行:
"console": "integratedTerminal",日志就直接打到你熟悉的底部终端里 - 去掉
"internalConsoleOptions": "neverOpen"或设为"openOnSessionStart",能避免调试器“静默失败” - 如果用了
nodemon自动重启,别把console设成internalTerminal——它会不断新建窗口,干扰判断 - Express 启动后报
EADDRINUSE?大概率是上一次调试没彻底退出,端口被占;attach模式下这个问题更少,因为进程是你手动启的
真正卡住人的,往往不是“怎么配”,而是 node -v 在终端能跑,但在 VSCode 里报 Cannot find runtime 'node'——那说明 VSCode 没读到你的 shell 环境变量。Mac 上用 nvm 的,务必从终端执行 code . 启动编辑器;Windows 用户检查安装 Node.js 时是否勾了 “Add to PATH”。这些细节不处理,launch.json 写得再标准也没用。

















