vscode附加调试node.js必须用inspector协议而非debug协议,因node.js 6.3+已废弃debug协议;launch.json中应删去或明确设"protocol": "inspector",避免配置错误导致连接失败、断点灰色。

VSCode 附加调试 Node.js 进程,不是“选 Debugger 还是 inspector”,而是 inspector 协议已全面取代旧 debug 协议——Node.js 6.3+ 默认只支持 inspector,debug 协议早已废弃。强行配 "protocol": "debug" 会直接失败。
为什么 launch.json 里必须写 "protocol": "inspector"
VSCode 的 node 调试器从 v1.30+ 起默认使用 V8 Inspector Protocol(即 inspector),它基于 WebSocket 和 HTTP,比老 debug 协议更稳定、支持更多功能(如异步堆栈、ESM 模块断点)。但这个字段在多数模板里被省略,是因为 VSCode 会自动 fallback 到 inspector;一旦你显式写了 "protocol": "debug",就强制走已移除的路径,结果就是:
Could not connect to debug target- 断点永远灰色,hover 提示
This breakpoint will not be hit - 控制台报错
Error: Protocol error: 'Debugger.enable' wasn't found
正确做法是:要么彻底删掉 "protocol" 字段(推荐),要么明确写 "protocol": "inspector"。不要碰 debug。
attach 配置里 port 和 address 怎么填才不连错
port 必须和启动时 --inspect=9229 的端口完全一致;address 不是“要不要填”的问题,而是“填错就连不上”的关键。
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
- 本地开发:用
"address": "localhost"或直接删掉(默认就是 localhost) - Docker 容器内运行:
--inspect=0.0.0.0:9229+"address": "host.docker.internal"(macOS/Windows)或容器宿主机 IP(Linux) - 远程服务器:确保防火墙放行该端口,且
--inspect=0.0.0.0:9229(不能是127.0.0.1),"address"填服务器 IP - 如果填了
"address": "127.0.0.1"但进程绑的是0.0.0.0,通常能连上;反过来(进程绑127.0.0.1,VSCode 连localhost)也 OK;但跨网络时,127.0.0.1一定失败
断点灰色?八成是路径映射没对上
附加成功 ≠ 断点生效。VSCode 根据 source map 里的 sources 字段匹配当前打开的文件路径,一旦不一致,断点就变灰。
- 检查
launch.json中"cwd"是否指向实际运行目录(比如进程在/app启动,但你打开的是~/project) - 确认
sourceMap生成时用了相对路径还是绝对路径;若用 Webpack/Vite,加devtool: 'source-map'并设output.devtoolModuleFilenameTemplate统一前缀 - Docker 场景下,挂载路径差异最常见:
-v $(pwd):/app启动,但 source map 里写的是/Users/me/project/src/...→ 需在launch.json加"sourceMaps": true和"outFiles": ["./dist/**/*.js"],再配"sourceMapPathOverrides"映射 - 用 Chrome DevTools 打开
chrome://inspect,点“Configure”,加一条file:///app/* -> ${workspaceFolder}/*,VSCode 会复用这个映射
npm script 启动时怎么加 --inspect 才不冲突
别改 npm start,单独加一个 debug script,避免污染日常命令。
- package.json 里写:
"debug": "node --inspect-brk ./src/index.js"(--inspect-brk更安全,防止启动太快错过断点) - 如果用 ts-node/nodemon:用
ts-node --inspect-brk或nodemon --inspect-brk --exec ts-node - 禁用 VSCode 自动 attach(
"debug.node.autoAttach": "off"),否则 npm run debug 时可能弹两个调试会话,第二个连不上 - 用
node --inspect=0.0.0.0:9229时,确保没其他进程占着 9229;可用lsof -i :9229或netstat -an | grep 9229查
真正卡住人的从来不是配置项本身,而是进程是否真开了调试门、路径是否真实对应、端口是否可达——三者缺一,附加就只是个假动作。










