VSCode调试失败主因是launch.json配置错误:program路径错、cwd不匹配、env格式错误;断点失效多因sourceMap未开启或outFiles路径不对;启动即崩溃需设stopOnEntry或--trace-warnings。

VSCode 调试不是“点一下就跑起来”,关键在于 launch.json 配置是否匹配当前运行环境和入口文件——配错路径、漏掉 env 或用错 program,调试器根本连不上进程。
为什么断点不生效?检查 sourceMap 和 outFiles 是否对齐
TypeScript、Vue 或 Webpack 项目里,断点打在 .ts/.vue 文件却跳过,大概率是调试器找不到源码映射。VSCode 默认只读取生成代码,不自动回溯原始文件。
- TS 项目必须确保编译时开启
"sourceMap": true(tsconfig.json),且launch.json中outFiles指向正确输出目录,例如["${workspaceFolder}/dist/**/*.js"] - Vue CLI 项目建议用
vue-cli-service serve启动,并在launch.json中设置"runtimeExecutable": "npm"和"runtimeArgs": ["run", "serve"],避免直接调试打包后代码 - Chrome 调试时若提示 “No source map found”,检查 Network 面板中
.js.map文件是否 404,常见于 webpackdevtool设为hidden-source-map或未启用inlineSourceMap
launch.json 常见错误配置项与修正方式
绝大多数调试失败源于 launch.json 的三个字段:路径没写对、运行时选错、参数传反了。它不像 package.json 那样有 schema 校验,错一个字母就静默失败。
-
program必须是可执行的 JS 入口(如"${workspaceFolder}/src/index.js"),不能是.ts文件(除非配了ts-node) -
cwd决定process.cwd()返回值,影响相对路径读取,Node.js 项目常因cwd错误导致require找不到模块 -
env是对象,不是字符串,写成"env": "NODE_ENV=development"会完全失效,正确写法是"env": {"NODE_ENV": "development"} - 调试子进程(如
child_process.fork)需额外加"console": "integratedTerminal"并手动 attach,VSCode 不自动追踪 fork 出的进程
如何快速定位“程序启动就崩溃”类错误?
这类问题往往发生在 node 进程启动瞬间,还没走到第一个断点就退出,常规断点无效。必须让调试器在第一行就接管。
- 在
launch.json中添加"stopOnEntry": true,强制在入口文件第一行暂停 - 如果崩溃来自依赖模块(比如
require('xxx')报错),启用 Node.js 的--trace-warnings:在runtimeArgs加入"--trace-warnings",错误堆栈会包含完整 require 链 - Windows 下遇到
EPERM或EACCES类错误,大概率是杀毒软件拦截了调试端口(默认 9229),临时关闭实时防护或换端口("port": 9230) - 使用
node --inspect-brk启动后,再在 VSCode 里选择 “Attach to Node Process”,比 launch 更早介入生命周期
真正卡住人的从来不是“怎么设断点”,而是搞不清当前调试的是哪段代码、哪个进程、哪个工作目录——console.log(process.pid) 和 console.log(process.cwd()) 在怀疑环境错乱时,比任何文档都管用。










