断点不生效主因是node未被vscode识别或program路径错误:需在.vscode/settings.json中配置path确保node可用,program必须指向真实js文件(如"${workspacefolder}/dist/index.js"),且typescript项目须配sourcemaps、outfiles及resolvesourcemaplocations。

断点不生效?先确认 node 是否真在 VSCode 的 PATH 里
VSCode 调试器启动时,会独立加载环境变量,和你在终端里看到的 node -v 输出可能不一致。如果断点全灰、点不进去,或者调试器报 Cannot find runtime 'node' on PATH,这不是插件问题,而是它根本找不到 node 命令。
- 在 VSCode 内置终端(
Ctrl + `)里执行which node,记下完整路径(比如/opt/homebrew/bin/node) - 把这行加进
.vscode/settings.json:"terminal.integrated.env.osx": { "PATH": "/opt/homebrew/bin:${env:PATH}" }(Windows 对应terminal.integrated.env.windows,路径填C:\Program Files\nodejs\) - 改完必须彻底退出 VSCode(不是关窗口,是杀进程),再从终端启动:
code . - 验证:重启后,在终端运行
node -v和调试器启动时都应有输出
launch.json 中 program 字段写错,断点永远不触发
program 不是命令行参数,也不是相对路径语法,它必须指向一个真实存在的、Node 可直接执行的 JS 文件(不能是 .ts、.jsx 或未编译的源码)。
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
- 正确写法:
"program": "${workspaceFolder}/dist/index.js"(推荐用变量,避免硬编码) - 错误写法:
"program": "src/index.js"(缺${workspaceFolder}/,VSCode 找不到) - 错误写法:
"program": "./src/index.js"(.在这里不被解析,等同字面量) - TypeScript 项目:别写
src/index.ts;要么编译后指向dist/index.js,要么配preLaunchTask触发tsc - ESM 项目:确保
package.json里有"type": "module",否则import会报Cannot find module
条件断点怎么设才真正起作用
右键断点红点 → Edit Breakpoint,输入表达式即可。但不是所有写法都支持——调试器只做布尔求值,不执行函数调用。
- 能用:
user.id === 123、process.env.NODE_ENV === 'development' - 不能用:
getUserById(123)、console.log('hit')(会直接报错) - 异步代码中,断点容易被跳过:优先在
async函数顶部或await行设断点,别放在.then()回调里 - 断点变成空心红圈?说明源码映射失败,常见于未启用
sourceMaps或outFiles路径不匹配
attach 模式调试服务时端口连不上
用 node --inspect-brk ./dist/index.js 启动后,VSCode 却连不上,大概率是端口或地址没对齐。
- 检查命令行是否用了自定义端口:
node --inspect=9230 ./dist/index.js→launch.json里"port": 9230必须同步 - Docker 容器内运行?
address得设成"0.0.0.0",且宿主机要暴露该端口 - 别同时起两个
--inspect进程,第二个会报address already in use - 验证是否连上:看 VSCode 底部状态栏是否显示「调试正在运行」,或打开「调试控制台」查
Debugger attached.
program 路径和 sourceMaps 链路这两层映射关系——前者决定“能不能停”,后者决定“停在哪一行”。只要其中一环断了,断点就只是个红点而已。










