断点不触发的根本原因是launch.json中program或outfiles路径与实际源码/编译产物不匹配;需确保program指向可执行js文件(如dist/index.js)、outfiles精确匹配输出目录、sourcemaps启用且.map文件存在,node调试应选attach模式并端口一致。

调试时断点不触发,launch.json 配置错在哪?
断点灰色、提示“未绑定”,大概率是 launch.json 中的 program 或 outFiles 路径没对上源码或编译产物。VSCode 不会自动猜你当前在跑哪个文件,必须显式告诉它入口和生成路径。
-
program必须指向可执行的 JS 文件(如dist/index.js),不能写src/index.ts - TypeScript 项目务必配
outFiles,且路径要匹配实际输出目录,比如:["${workspaceFolder}/dist/**/*.js"],注意通配符和斜杠方向 - 若用
node --inspect启动服务,应选attach模式而非launch,否则 VSCode 会尝试自己拉起进程,导致端口冲突或找不到进程 - 检查
sourceMaps是否为true,且构建工具(如 tsc、webpack)确实生成了.map文件并放在对应位置
debugger 语句失效,是不是被跳过了?
不是被跳过,而是当前运行环境没启用调试器或没连上 VSCode。浏览器里按 F12 打开 DevTools 就能触发 debugger;但 Node.js 环境下,必须启动时加 --inspect 参数,且 VSCode 的调试配置要匹配该端口(默认 9229)。
- 命令行启动:运行
node --inspect=0.0.0.0:9229 index.js,确保地址可被 VSCode 访问(Docker 或 WSL 下常需改0.0.0.0) -
launch.json中port值必须与启动命令一致,否则 attach 失败 - 某些 npm script(如
npm run dev)可能封装了启动逻辑,直接在终端里跑node --inspect...更可控 - 确认没有其他进程占用了 9229 端口,可用
lsof -i :9229(macOS/Linux)或netstat -ano | findstr :9229(Windows)查
为什么变量值显示 undefined 或 [Object]?
这是调试器解析作用域或序列化对象时的常见表现,并非代码问题。VSCode 默认只展开一层对象,且对闭包变量、异步上下文中的临时绑定支持有限。
使用 JSON Schema 验证 JSON 数据,从示例 JSON 生成 schema,并将其转换为 TypeScript 接口、Python 数据类或 Markdown 文档。
- 鼠标悬停看变量时,右键选择
Reveal in Variables View,再手动点击小箭头展开深层属性 - 在
Debug Console里直接输入变量名回车,比悬停更可靠;复杂对象可用console.dir(obj, { depth: null }) - 异步函数中(如
async/await或Promise.then),断点设在回调内部才能看到完整作用域;设在await行只会看到 Promise 实例 - 避免在压缩后的代码里调试——sourcemap 若映射不准,变量名会被混淆成
_a、_b,此时应确保构建时关闭压缩或保留原始名称
插件装了却没反应,ms-vscode.vscode-typescript-next 这类扩展要不要装?
绝大多数 JS/TS 调试无需额外插件,VSCode 自带的 Node Debug 和 JavaScript Debugger(已内置,不再单独安装)足够用。所谓“增强插件”往往带来兼容性风险,尤其在 VSCode 更新后。
- 禁用所有非必要插件,只留官方调试器,测试是否恢复正常——很多问题源于插件间 hook 冲突
-
ms-vscode.vscode-typescript-next是 TypeScript 官方预发布版,稳定性低,日常开发用稳定版(即 VSCode 自带 TS)更稳妥 - 真正需要装的只有两类:特定框架支持(如
Vue.js Extension Pack对.vue单文件调试)、或远程开发桥接(如Remote - SSH) - 检查插件是否被工作区禁用:打开
Extensions视图 → 点击右上角齿轮 → “Show Enabled Extensions” → 切换到 “Workspace” 标签页确认
调试最麻烦的从来不是断点设在哪,而是搞不清当前到底在哪个上下文里跑——是打包后的代码?是 source map 映射失败?还是调试器根本没连上进程?每一步都得拿具体路径、端口、文件存在性去验证,而不是凭感觉猜。










