VSCode调试Vite项目断点不生效的主因是三处配置链断裂:vite dev服务未启动、launch.json的url与浏览器地址不一致、Volar未启用Take Over Mode;需确保服务运行、url完全匹配、使用pwa-chrome类型、webRoot设为${workspaceFolder}、Volar启用Take Over Mode并完全重启VSCode。
VSCode 调试 Vite 项目断点不生效,基本不是插件没装或 VSCode 版本低,而是三处配置链断裂:
vite
dev 服务未启动、
的
与浏览器地址栏不一致、Volar 未启用 Take Over Mode。
确保 vite dev 服务已运行且端口匹配
Vite 不提供调试协议入口,VSCode 是通过 attach 浏览器实现调试的。必须先手动执行
或
启动开发服务器,再点 VSCode 的 Launch 按钮 —— 后者只是打开浏览器并自动 attach,不是启动 vite 进程本身。
字段必须和终端里 vite 输出的地址完全一致(含协议、端口、路径),比如终端显示
,就不能写成
或漏掉
如果改过
中的
(如设为
),
里的
也必须同步改成
别用
:那是静态产物,无 source map、无 HMR、无法调试
launch.json 必须用 pwa-chrome 类型 + 正确 webRoot
旧版
在 VSCode 1.8+ 已弃用,会导致连接失败;
错误则所有断点显示「未绑定」。
必须用
(或
),不能用
—— 不是
,否则
或根目录脚本里的断点会失效
在标准 Vite 项目中通常不需要;若删掉后仍断点灰色,才考虑加最简映射:
Volar 必须启用 Take Over Mode 并禁用 Vetur
Vue 3 + Vite 项目里,Vetur 已废弃,它和 Volar 冲突会导致
语法高亮消失、
类型不识别、template 里无法跳转。
VSCode 1.118
微软正式发布 Visual Studio Code 1.118 版本 。本次更新重点强化了 AI 开发体验与企业管理能力,其中最引人注目的是新增 Copilot CLI 远程控制功能,允许开发者通过手机或网页远程监控和接管 AI 会话 。同时,为了提高 AI 的运行性价比,新版本优化了令牌缓存策略以降低成本 。此外,1.118 版还引入了 Chronicle 本地历史追踪、TypeScript 7.0 支持以及更严格的企业级访问管控 。
下载
在 VSCode 命令面板(
)中搜
,找到 Vetur → 右键 →
确认 Volar 已启用,且版本 ≥ 1.10.0(老版本不支持
等新语法)
进入 VSCode 设置 → Extensions → Volar → 勾选
改完必须**完全退出 VSCode 再重开**,否则语言服务器不会重新注册
根目录必须有 tsconfig.json 或 jsconfig.json
Volar 的类型推导、
提示、
别名跳转都依赖这个文件。没有它,
、
全部报红,IDE 提示基本归零。
TS 项目:确保根目录有
,且
包含
和
JS 项目:必须有
,且
开启,否则 Volar 不校验 JS 中的
删掉
这类嵌套配置 —— Volar 只读取项目根目录下的配置文件
最容易被忽略的是:Volar 启用 Take Over Mode 后,必须完全重启 VSCode;以及
设错导致断点「未绑定」时,很多人会反复检查
,却忘了它根本不用配。
launch.jsonurlvitevite devurlhttp://localhost:3000http://127.0.0.1:3000http://vite.config.tsserver.port8080launch.jsonurl"http://localhost:8080"vite build && vite previewtype: "chrome"webRoot"type": "pwa-chrome""pwa-msedge""chrome""webRoot": "${workspaceFolder}""${workspaceFolder}/src"vite.config.tssourceMapPathOverrides"*": "${webRoot}/*"refCtrl+Shift+PExtensions: Show Enabled ExtensionsDisable (Workspace)defineModelEnable Take Over ModedefineProps@/refcomputedtsconfig.jsoncompilerOptions.types"vue""vite/client"jsconfig.json"checkJs": truedefinePropssrc/tsconfig.jsonwebRootsourceMapPathOverrides