断点不生效主因是volar未启用take over mode、launch.json中url与实际服务地址不一致、webroot或sourcemappathoverrides配置错误;需确保volar接管语言服务、服务已重启、路径映射精准匹配。

能跑起来,但断点不生效?问题大概率出在 Volar 没接管语言服务,或 launch.json 里 webRoot 和 sourceMapPathOverrides 配错——不是插件装了就能调试,而是三者必须咬合:Volar + source map + launch 配置。
确认项目启动命令和端口
VSCode 本身不运行 Vue 项目,它只调用终端执行脚本。别猜,直接打开 package.json 查 scripts 字段:
- Vite 项目常见是
"dev": "vite",默认端口5173 - Vue CLI 项目常见是
"serve": "vue-cli-service serve",默认端口8080 - 如果端口被占,Vue CLI 会自动换端口(如
8081),终端输出的Local:行才是真实地址
务必把 launch.json 中的 url 值设成这个地址,少一个斜杠、错一个端口,断点就变灰色。
必须启用 Volar 的 Take Over Mode
这是 <script setup></script> 断点失效的头号原因。Vetur 已废弃,Volar 必须接管 TS/JS 语言服务,否则 VSCode 用内置解析器读 .vue 文件,根本识别不了组合式 API 语法。
将一个或多个视频上传至YouTube。当用户想“上传到YouTube”“发YouTube”“批量上传”“upload to YouTube”“post videos to YouTube”或发布到YouTube时使用此技能。
- 安装 Volar 插件后,进 VS Code 设置 → Extensions → Volar → 勾选
Enable Take Over Mode - 手动禁用 Vetur(如有):Settings → Extensions → 搜索
Vetur→ 点击禁用 - 重启 VS Code 窗口(不是重载,是完全关闭再打开)
- 打开任意
.vue文件,看右下角语言模式是否显示Vue (Volar),不是Vue或HTML
launch.json 关键字段不能抄错
不同构建工具对路径映射要求不同,照搬模板容易翻车。以 Vue CLI 为例(Vite 可类推):
-
type用pwa-chrome或pwa-edge,别用旧版chrome(已弃用) -
webRoot必须是"${workspaceFolder}",不是"${workspaceFolder}/src"——源码映射基于项目根目录 -
sourceMapPathOverrides要覆盖 webpack 的实际路径前缀:"webpack:///src/*": "${webRoot}/src/*"和"webpack:///./src/*": "${webRoot}/src/*"这两条缺一不可 - 如果用了 TypeScript,建议加一行
"vue.preferences.experimentalScriptSetupSFCMode": "enabled"到.vscode/settings.json
配置完别急着 F5,先检查浏览器开发者工具 Sources 面板左侧是否有 webpack:// 目录树展开,且里面能点开 src/ 下的文件——没有就说明 source map 没加载成功。
确保 devtool 生效且未被覆盖
即使 vue.config.js 写了 devtool: 'source-map',也可能被其他配置覆盖。尤其注意:
- Vue CLI 3+ 项目,必须写在
configureWebpack里,不是chainWebpack - 若项目用了
vue.config.js中的configureWebpack: { optimization: { minimize: true } },生产模式压缩可能干扰开发时 source map,临时注释掉测试 - Vite 项目默认开启 source map,但若改过
build.sourcemap为false,需改回true - 启动前务必
Ctrl+C停掉旧服务,再npm run serve(或npm run dev)——热更新不会重发 source map
最隐蔽的坑是:你改了 vue.config.js,但没重启开发服务器,VSCode 仍在用旧的 bundle,断点自然无效。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










