vitest断点调试需以--inspect模式启动并配置vs code的attach调试,关键在于端口一致、启用sourcemaps及正确配置resolvesourcemaplocations。

在 Vitest 中进行断点调试,核心是让测试代码在 Node.js 环境中可被调试器(如 VS Code)附加,并支持源码映射(source map)和断点命中。关键不在于“Vitest 本身是否支持”,而在于启动方式和环境配置是否匹配调试器预期。
启用 --inspect 模式启动 Vitest
Vitest 基于 Vite 和 Jest 风格 API,但底层运行在 Node.js 上。要调试,需以调试模式启动 Node 进程:
- 命令行直接运行:
vitest --inspect(监听默认端口 9229) - 或指定端口:
vitest --inspect=9230,避免端口冲突 - 若只想调试单个测试文件,可加参数:
vitest --inspect src/utils.test.ts
执行后终端会输出类似 Debugger listening on ws://127.0.0.1:9229/... 的提示,表示调试器已就绪。
VS Code 中配置 launch.json 启动调试会话
在项目根目录的 .vscode/launch.json 中添加以下配置(推荐使用 attach 模式,更稳定):
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "attach",
"name": "Attach to Vitest",
"port": 9229,
"skipFiles": ["<node_internals>/**"],
"outFiles": ["${workspaceFolder}/dist/**/*.js"],
"sourceMaps": true,
"resolveSourceMapLocations": [
"${workspaceFolder}/**",
"!**/node_modules/**"
]
}
]
}</node_internals>
⚠️ 注意:
- port 必须与 --inspect 启动时一致;
- sourceMaps 和 resolveSourceMapLocations 是关键,确保 TS/JSX 源码断点可命中;
- 若用 Vite 别名(如 @/),建议在 vite.config.ts 中配置 resolve.alias 并确保测试环境能识别。
在测试代码中打断点并触发调试
在 VS Code 中打开测试文件(如 math.test.ts),在待调试行左侧点击设断点(红点),然后:
- 先在终端运行
vitest --inspect(保持进程运行) - 再在 VS Code 中按 F5 或选择 “Attach to Vitest” 启动调试会话
- Vitest 执行到该测试时,会自动暂停,变量、调用栈、表达式求值全部可用
? 小技巧:可在测试中加 debugger 语句,它会在 attach 成功后自动触发断点(前提是 source map 正确且未被压缩)。
常见问题排查
如果断点显示为空心圆(未命中),大概率是 source map 未生效:
- 确认
vite.config.ts中build.sourcemap设为true(Vitest 测试默认使用开发模式,但部分插件可能影响) - 检查
vitest.config.ts是否覆盖了 sourcemap 行为(例如设置了coverage.enabled = true可能干扰,可临时关闭) - 确保测试文件不是通过
require()动态加载(Vitest 推荐 ESM 导入,动态 require 不走 Vite 编译链,无 source map) - VS Code 左下角查看当前调试状态,确认已连接到正确端口
不复杂但容易忽略。只要 Node 进程带 inspect 启动、VS Code 正确 attach、source map 可达,断点就能稳稳停住。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










