launch.json中sourceMaps和outFiles配错会导致断点变空心,因调试器无法映射JS行号到源码;必须同时启用"sourceMaps": true、精确配置outFiles路径(如["${workspaceFolder}/dist/*/.js"])、确保tsconfig.json中sourceMap:true且outDir一致,多包项目还需resolveSourceMapLocations放行路径。

launch.json里sourceMaps和outFiles配错,断点直接变空心
你在src/index.ts打了断点,VSCode 显示空心圆、悬停提示“unbound breakpoint”,说明调试器压根没把运行时的 JS 行号映射回源码——不是代码没跑,是“地图”丢了。
必须同时满足三个条件,sourceMaps才真正生效:
-
"sourceMaps": true要显式写在launch.json的调试配置里(默认不是true) -
"outFiles"必须精确匹配编译产物路径,比如 TypeScript 输出到dist/,就得写["${workspaceFolder}/dist/**/*.js"];写成["./dist/**"]或漏掉**/*.js,调试器就找不到目标文件 -
tsconfig.json里"sourceMap": true已开启,且"outDir"和outFiles指向同一目录
多包项目(如packages/cli/src)还要加"resolveSourceMapLocations"放行路径:["${workspaceFolder}/packages/**/src/**", "!**/node_modules/**"],否则调试器跳过这些目录。
Node进程没带--inspect-brk,VSCode根本连不上
手动在终端执行npm start,再切回 VSCode 点“Attach to Process”,断点一定不触发——因为npm start默认不加--inspect-brk,Node 进程没暴露调试端口,VSCode 连都连不上。
正确做法只有一条:用"request": "launch",让 VSCode 自己启动进程并注入调试参数:
-
"type": "node"(别写pwa-node,老项目易 fallback 失败) -
"request": "launch"(不是attach) -
"program": "${workspaceFolder}/dist/server.js"(必须是真实存在的 JS 文件,不能是.ts源码或npm命令)
--inspect-brk由 VSCode 自动加,它会让进程卡在第一行,适合设启动断点;如果用--inspect,进程不暂停,只能用于attach场景。
VSCode 没继承 shell 的 PATH,node 命令根本找不到
你在终端里能跑node -v,不代表 VSCode 调试器能调用它——尤其 macOS/Linux 下,VSCode 常不继承 zsh 或 bash 的PATH。
诊断并恢复通过 SSH 隧道连接的 OpenClaw 节点。用于解决配对必需错误、隧道冲突、远程端点错误以及 SSH 目标配置错误等问题。
验证方式很简单:打开 VSCode 内置终端(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}"}}
改完必须彻底重启 VSCode,环境变量不会热更新。Node 版本也得 ≥ 14,低于此版本对async_hooks支持不全,异步栈挂起可能失败。
TypeScript 编译产物里没生成 .map 文件,断点只能停在 JS 上
你确认tsconfig.json写了"sourceMap": true,但dist/index.js末尾没有//# sourceMappingURL=index.js.map注释,或者dist/下根本没有index.js.map文件——那所有调试配置都是白搭。
常见原因有三个:
-
tsc编译时没加--sourceMap参数,或tsconfig.json里"sourceMap"写在了错误层级(必须在compilerOptions里) - 启用了
"inlineSourceMap": true,.map 内容被塞进 JS 文件里,VSCode 默认不读这种内联格式 - 构建脚本(如
npm run build)实际执行的是webpack或vite,而它们的devtool配置覆盖了tsc行为,比如vite build默认关闭 sourcemap,必须显式设build.sourcemap: true
检查最直接:进dist/目录,ls -l *.map。没文件,就不是 VSCode 的问题,是构建链路断了。

















