VSCode调试Node.js失败主因是launch.json配置错误或node命令未被正确识别;需验证PATH、program路径、sourceMaps、nodemon配置及attach端口等细节。

VSCode 调试 Node.js 本质就是靠 launch.json 驱动调试器连接到 Node 进程,不是装个插件点一下就能用——断点不生效、console.log 不输出、process.env 读不到,90% 是 launch.json 配错了或 node 命令根本没被 VS Code 正确识别。
断点点了没反应?先确认 node 命令在 VS Code 里能跑通
VS Code 的 Node 调试器不会自带 node,它直接调用系统 PATH 里的可执行文件。终端里 node -v 成功,不代表 VS Code 能用——尤其 macOS/Linux 下用 zsh 启动 VS Code 时,它可能压根没继承 shell 的 PATH。
- 在 VS Code 终端(
Ctrl+`)里直接输node -v,失败就说明环境没接上 - 查真实路径:
which node(macOS/Linux)或where node(Windows),比如输出/opt/homebrew/bin/node - 在项目根目录的
.vscode/settings.json里显式补全 PATH:{ "terminal.integrated.env.osx": { "PATH": "/opt/homebrew/bin:${env:PATH}" } } - 改完必须重启 VS Code,环境变量不会热更新
launch.json 里 program 指向错误是断点失效最常见原因
program 字段必须是编译后的 .js 文件路径,不能写 .ts 或 .jsx;也不能写错相对路径,比如项目结构是 src/server.ts 编译到 dist/server.js,那 program 就得是 "${workspaceFolder}/dist/server.js",而不是 "${workspaceFolder}/src/server.ts"。
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
- 别手写
launch.json:按Ctrl+Shift+P→ 输入Debug: Open launch.json→ 选Node.js,让 VS Code 自动生成基础结构 - 生成后立刻检查
program值是否和你实际运行的入口一致(index.js?app.js?dist/index.js?) - Windows 路径含空格不用加引号,VS Code 会自动处理;但如果你手动加了
args数组,每个参数字符串得自己包引号,比如"--port=3000" - TypeScript 项目必须配
sourceMaps: true和outFiles,否则断点打在 TS 上,实际停在 JS 行,位置对不上
用 nodemon 热重载调试时,别把 type 设成 node + program
很多人想“一边改代码一边调试”,就直接在 launch.json 的 program 里写 nodemon index.js,结果报错或断点丢失——nodemon 是个 wrapper,VS Code 的 node 调试器无法直接 attach 到它启动的子进程。
- 正确做法:把
type保持为"node",但换用runtimeExecutable指向nodemon可执行文件:"runtimeExecutable": "${workspaceFolder}/node_modules/.bin/nodemon" - 再通过
runtimeArgs传参:"runtimeArgs": ["--inspect-brk", "${workspaceFolder}/index.js"] - 必须加
"restart": true,否则文件变更后调试会话不会自动重连 - 本地安装
nodemon:npm install --save-dev nodemon,全局安装路径不稳定,VS Code 可能找不到
调试 Express/Koa 等长期运行服务,优先用 attach 模式
用 npm run dev 启的服务,或者 Docker 容器里跑的 Node 进程,没法用 launch 模式从头启动——这时就得让 VS Code 主动连过去,也就是 attach 模式。
- 先确保服务是以
--inspect或--inspect-brk启动的,例如:node --inspect=9229 index.js,端口要记牢 - 在
launch.json新增一个 configuration:{ "type": "node", "request": "attach", "name": "Attach to Server", "port": 9229, "address": "localhost", "restart": true } -
attach模式下,program字段无效,删掉或留空 - 如果服务启在 Docker 容器里,
address可能要改成"0.0.0.0",且容器需暴露并映射9229端口
真正卡住人的从来不是“怎么设断点”,而是 node 命令不可用、program 路径不对、nodemon 配法错位、attach 端口没对齐——这些细节不验证清楚,调试器连进程都连不上,更别说单步执行了。

















