NestJS v10使用SWC构建后VSCode断点无法正常工作
解决NestJS v10 + SWC构建下VSCode断点失效问题
1. 确保SWC已启用Source Map生成
首先检查你的SWC配置是否开启了source map,这是断点能映射到TS源码的核心:
- 若使用
nest-cli.json配置:
{ "$schema": "https://json.schemastore.org/nest-cli", "collection": "@nestjs/schematics", "sourceRoot": "src", "compilerOptions": { "deleteOutDir": true, "builder": "swc", "typeCheck": true, "sourceMap": true } }
- 若使用独立
.swcrc文件:
{ "jsc": { "parser": { "syntax": "typescript" }, "sourceMaps": true }, "sourceMaps": true }
2. 修正VSCode launch.json配置
原配置存在参数冲突和source map映射缺失的问题,替换为以下配置:
{ "version": "0.2.0", "configurations": [ { "type": "node", "request": "launch", "name": "Debug Nest", "runtimeExecutable": "npm", "runtimeArgs": [ "run", "start:dev" ], "envFile": "${workspaceFolder}/.env", "cwd": "${workspaceFolder}", "console": "integratedTerminal", "protocol": "inspector", "sourceMaps": true, "resolveSourceMapLocations": [ "${workspaceFolder}/**", "!**/node_modules/**" ], "skipFiles": [ "<node_internals>/**", "node_modules/**" ] } ] }
关键调整点:
- 移除了
args和手动添加的--inspect-brk:Nest的start:dev搭配SWC会自动注入调试监听参数,重复添加会导致冲突。 - 新增
resolveSourceMapLocations:明确告诉VSCode从项目目录下查找source map,排除node_modules。 - 配置
skipFiles:跳过不需要调试的内部文件和依赖,避免调试时进入无关代码。
3. 确认package.json启动脚本
确保start:dev脚本使用Nest官方命令,无需额外添加SWC相关参数:
{ "scripts": { "start:dev": "nest start --watch" } }
Nest v10会自动识别SWC构建器,执行该命令时会用SWC编译并启动带调试的热重载服务。
4. 额外排查步骤
- 清理构建产物:删除
dist文件夹后重新启动调试,避免旧的source map干扰。 - 检查Node.js版本:确保使用Node.js 18+(NestJS v10最低要求),低版本可能存在调试协议兼容问题。
- 禁用第三方插件:暂时禁用VSCode中TypeScript相关的第三方插件,排查是否有工具冲突。
内容的提问来源于stack exchange,提问作者Gokhan AYHAN
相关产品推荐
相关产品推荐

