VSCode调试Node.js后端无需额外插件,只需确保Node.js≥14、launch.json中program指向可执行.js文件、sourceMap配置正确,断点即可稳定触发;路径错误、sourceMap失效或重复--inspect参数是常见失败原因。

VSCode 调试 Node.js 后端不需要额外插件,只要 launch.json 配置对、入口路径准、Node 版本 ≥ 14,断点基本都能稳停。问题大多出在路径写错、源码映射断开、或误加重复 --inspect 参数上。
launch.json 的 program 字段必须指向可执行的 .js 文件
VSCode 不会自动编译 TypeScript 或处理 ESM 导入,program 值不能是 src/index.ts 或 index.mjs(除非你明确配置了 loader)。它必须是能被 node 直接运行的文件:
- TS 项目:要么设为编译后的
dist/index.js,要么用preLaunchTask触发tsc编译 - ESM 项目(
"type": "module"):VSCode 1.85+ 支持,但需确保runtimeArgs中没混用--loader和--inspect冲突参数 - 路径含空格或中文?不用手动加引号,VSCode 会自动处理;但
args数组里每个字符串得自己包引号,比如"--port=3001"
断点灰掉或不触发?先查 Node 启动模式和 source map
断点变灰色、hover 看不到变量、调用栈显示 eval 或乱码路径——基本是调试器没找到原始代码位置:
DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。
- 确认
node -v≥ 14(旧版不支持现代--inspect协议) - TS 项目:检查
tsconfig.json是否开启"sourceMap": true和"inlineSources": true - Webpack/Babel 项目:
devtool设为"source-map"或"inline-source-map",避免用"eval"类型 -
.js.map文件必须和.js同目录,且sources字段里的路径是相对路径(如../src/index.ts),绝对路径容易 404
用 nodemon 热重载调试时,别直接改 program
把 program 改成 nodemon 路径会导致 VSCode 启动失败或断点失效。正确做法是换用 runtimeExecutable + runtimeArgs:
- 本地安装:
npm install --save-dev nodemon - 配置项应为:
"runtimeExecutable": "${workspaceFolder}/node_modules/.bin/nodemon" -
"runtimeArgs": ["--inspect-brk", "${workspaceFolder}/index.js"](注意:不要手动加--inspect,VSCode 会自动注入) - 如果用全局
nodemon,写"runtimeExecutable": "nodemon",但需确保 PATH 可访问
attach 模式调试已运行进程,端口必须严格匹配
当你用 npm run dev 启动服务并想附加调试时,launch.json 里的 port 必须和命令行中 --inspect 指定的一致:
- 终端运行:
node --inspect=9230 index.js→launch.json中"port": 9230 - 默认端口是 9229,但多个服务共存时极易冲突,建议显式指定
-
request设为"attach",type仍为"node",别写成"pwa-node"(旧插件遗留) - 启动前确认终端输出类似
Debugger listening on ws://127.0.0.1:9230/...,否则 attach 会超时失败
最常被忽略的是:调试器看到的是编译后代码的位置,不是你编辑的源文件。哪怕 program 路径没错,只要 sourceMap 没对上,断点就只是摆设。每次改构建配置后,记得验证生成的 .js.map 是否有效可读。

















