远程调试node.js本质是vscode附加到已运行进程,需严格匹配端口、路径与sourcemap:request必须为"attach",port须与--inspect端口一致,remoteroot和localroot必须绝对路径一一对应,node启动需绑定0.0.0.0且防火墙放行,typescript还需正确生成并映射.map文件。

远程调试 Node.js 项目,本质是让 VSCode 连上另一台机器(或容器)里已启动的 node 进程,而不是本地跑一个副本。这要求两端端口通、路径对、sourceMap 链路不断——漏掉任一环,断点就停在 .js 里,或者根本连不上。
launch.json 中 request: "attach" 必须配对 port 和 remoteRoot
远程调试只认 request: "attach",不能用 "launch"。VSCode 不会帮你起进程,它只负责连接。
-
port必须和服务器上启动时指定的 --inspect 端口一致,比如node --inspect=9229 app.js→ 这里必须写"port": 9229 -
remoteRoot是服务器上项目的真实绝对路径,比如/home/user/app,不是你本地的路径 -
localRoot是你本地 workspace 对应的路径,VSCode 用它把远程的.js行号映射回你编辑的.ts或.js文件 - 如果路径有误,断点会变成空心红点(灰色),鼠标悬停提示 “breakpoint ignored”
服务器端启动 node 必须带 --inspect 且端口可被访问
光配对 launch.json 没用,服务端没暴露调试协议,VSCode 就是拨了个空号。
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
- 启动命令必须含
--inspect或--inspect-brk,后者会在第一行暂停,方便设断点 - 若服务器有防火墙(如
ufw或云厂商安全组),需放行对应端口(如9229) - 别用
--inspect=localhost:9229—— 这只监听127.0.0.1,外部连不上;应写--inspect=0.0.0.0:9229或直接--inspect=9229(Node ≥ 14 默认绑定所有接口) - 确认服务端能 telnet 自己的
9229端口:运行telnet localhost 9229,有 Connected 才算通
TypeScript 项目远程调试要双重 sourceMap 支持
TS 编译后断点停不到源码,不是 VSCode 的锅,而是 sourceMap 没从服务器传到本地,或者路径映射失效。
- 服务器编译必须生成独立
.map文件(禁用"inlineSourceMap": true),且.map文件得和.js在同一目录 -
launch.json里必须显式开"sourceMaps": true,并用"outFiles"指向服务器上的产物路径,例如"outFiles": ["/home/user/app/dist/**/*.js"] - 如果 TS 源码不在项目根目录(比如在
packages/core/src),还得加"resolveSourceMapLocations"白名单,否则 VSCode 不敢加载跨目录的.map - 验证方法:在 VSCode 调试面板打开 “CALL STACK”,右键某帧 → “Reveal in Explorer”,看是否跳转到你的
.ts文件
最常被忽略的是 remoteRoot 和 localRoot 的路径一致性——尤其当项目用 Docker 或 CI 构建时,服务器上的路径往往和本地开发路径结构不同,靠手动拼错一个斜杠,断点就彻底失灵。










