断点不生效主因是VSCode未连上Node进程,需确认node在调试器PATH中、program路径正确(如"${workspaceFolder}/dist/index.js")、launch.json含type:"node"和request:"launch"/"attach"三项。

断点不生效,八成不是代码问题,而是 VSCode 根本没连上 Node 进程——node 不在调试器 PATH、program 路径写错、或 launch.json 缺关键字段,这三件事不确认,点再多断点也没用。
VSCode 里 node -v 能跑,但调试器报 “Cannot find runtime 'node'”
这不是插件问题,是 VSCode 启动时没加载你的 shell 配置(比如 ~/.zshrc),导致调试器根本看不到 node 命令。
- 在 VSCode 内置终端(
Ctrl + `)里执行which node,记下路径(如/opt/homebrew/bin/node) - 在项目根目录的
.vscode/settings.json中显式注入 PATH:{ "terminal.integrated.env.osx": { "PATH": "/opt/homebrew/bin:${env:PATH}" } } - 改完必须彻底退出 VSCode(包括后台进程),再从终端启动:
code .;Windows 用户重装 Node.js 时务必勾选 “Add to PATH”
launch.json 的 program 字段总写错
它不是命令行参数,也不是相对路径语法,而是必须指向一个真实存在的、可直接用 node 执行的 JS 文件。
ZenHeart zenlink 与 zenlink-mcp 为 OpenClaw,涵盖安装、MCP 注册、钩子接线、入站轮询及升级维护。
- 正确写法:
"program": "${workspaceFolder}/dist/index.js"(推荐用变量,避免硬编码) - 错误写法:
"program": "src/index.js"(缺${workspaceFolder}/,VSCode 找不到) - 错误写法:
"program": "./src/index.js"(.在这里不被解析,等同字面量) - TypeScript 项目别写
src/index.ts;要么编译后指向dist/index.js,要么加preLaunchTask触发tsc
断点全灰、点不进去,type 和 request 漏了没设
VSCode 不会自动识别 JS 文件该用什么调试器,type: "node" 和 request: "launch" 或 "attach" 必须显式声明,缺一不可。
-
request: "launch":适用于直接运行入口文件,如node index.js;此时program必须是 JS 文件路径 -
request: "attach":适用于已用node --inspect-brk ./bin/www启动的服务;确保port和命令行一致(默认9229) - 别手写
type: "pwa-node"——老项目或 CI 场景下容易 fallback 失败,优先用"node"
TypeScript 断点停在 JS 行,而不是你写的 TS 行
源码映射链路断了,VSCode 不知道 .ts 和 .js 怎么对应。
- 确保
tsc编译时生成.map文件:"sourceMap": true在tsconfig.json里已启用 -
launch.json中必须同时配:"sourceMaps": true和"outFiles": ["./dist/**/*.js"] - 如果源码不在根目录(如
packages/foo/src),还要加"resolveSourceMapLocations"显式放行:["${workspaceFolder}/packages/**/src/**", "!**/node_modules/**"]
最容易被忽略的是:改完 settings.json 或 launch.json 后没重启 VSCode,环境变量和配置都不会生效;还有就是误把 nodemon 当作 program 直接写进去——它只是 wrapper,调试器 attach 不到子进程。

















