vscode调试node.js失败90%因launch.json配置错误或sourcemap未启用;program适用于直接运行js文件,runtimeexecutable配合runtimeargs用于nodemon等前置命令,ts项目须确保tsconfig.json、launch.json及路径全链路对齐sourcemap。

VSCode 调试 Node.js 项目失败,90% 是 launch.json 配置不对,或没启用 source map —— 尤其在 TypeScript 项目里,不配 sourceMap,断点永远不生效。
launch.json 中 program 和 runtimeExecutable 到底该用哪个?
选错会导致调试启动失败、进程闪退、或根本连不上调试器。
-
program:适用于直接运行单个 JS 文件(比如index.js或dist/main.js),VSCode 自带 Node 运行时启动。适合纯 JS 项目或已编译的 TS 产物。 -
runtimeExecutable:必须配合runtimeArgs使用,常见于需要前置命令的场景,比如用nodemon热重载:"runtimeExecutable": "${workspaceFolder}/node_modules/.bin/nodemon",<br>"runtimeArgs": ["--inspect-brk", "${workspaceFolder}/src/main.ts"] - 混淆点:TypeScript 项目若用
tsc --watch编译 +node执行,应优先用program指向dist/main.js,而非src/main.ts;否则 VSCode 会尝试直接运行 TS 文件,报错Cannot use import statement outside a module。
TS 项目断点不命中?检查这三处 source map 配置
TypeScript 调试失效,几乎全是 source map 链路断裂。不是“开了就行”,而是要全链路对齐。
将一个或多个视频上传至YouTube。当用户想“上传到YouTube”“发YouTube”“批量上传”“upload to YouTube”“post videos to YouTube”或发布到YouTube时使用此技能。
- tsconfig.json 必须有:
"sourceMap": true,且"outDir"和"rootDir"路径正确(例如"outDir": "./dist","rootDir": "./src") - launch.json 中需显式启用源码映射:
"sourceMaps": true,并确保"outFiles"指向编译产物目录,如:"outFiles": ["${workspaceFolder}/dist/**/*.js"] - VSCode 工作区路径不能含中文或空格 —— 即使 tsconfig 和 launch.json 都正确,路径含空格也会导致 source map 解析失败,断点灰掉。
attach 模式连不上 9229 端口?先验证进程是否真在监听
很多人以为 node --inspect=9229 app.js 一执行就自动可连,其实常被防火墙、端口占用或参数写错卡住。
- 终端执行后,立刻查监听状态:
macOS/Linux:lsof -i :9229;Windows:netstat -ano | findstr :9229 - 确认输出里有
LISTEN状态,且 PID 对应你的 node 进程;没有则说明--inspect参数未生效(常见于用了npm start而没透传参数) - launch.json 的
"port"必须和启动命令中指定的端口一致,比如node --inspect=3001 app.js,配置就得是"port": 3001,不能硬写 9229 - Docker 场景下,
address不能写localhost,得改成0.0.0.0,且容器启动时加-p 9229:9229
最易被忽略的其实是 tsconfig.json 里的 sourceRoot 和 mapRoot —— 它们不填不影响编译,但会影响 VSCode 定位源码的位置,尤其当项目结构嵌套深、或用了 monorepo 的 symlink 时,断点会偏移到错误文件里。










