怎样在VSCode中配置Vue.js项目开发与热重载【教程】

11次阅读

vscodevue项目热重载不生效需先确认使用vite或Vue CLI,检查开发服务器是否运行、端口是否被占、files.autoSave设置、插件是否为Volar(vue3)或Vetur(Vue2),并验证vite.config.ts中HMR配置及sourcemap路径映射。

VSCode 里 Vue 项目热重载不生效?先确认你用的是 Vite 还是 Vue CLI

热重载行为和配置方式完全不同:vue cli 用 vue-cli-service servevitevitenpm run devvscode 本身不提供热重载,它只是编辑器;真正起作用的是底层开发服务器。如果你改了 .vue 文件但浏览器没更新,大概率是服务没跑起来,或者端口被占、https 配置干扰、甚至文件保存没触发(比如禁用了 vscode 的 files.autosave)。

实操建议:

  • 终端里手动运行 npm run dev(Vite)或 npm run serve(Vue CLI),别只靠插件按钮
  • 检查终端输出是否看到 Local: http://localhost:5173/(Vite)或 App running at:(Vue CLI)
  • 打开浏览器访问对应地址,而不是直接双击 index.html
  • 确认 VSCode 设置里 files.autoSaveonFocusChangeafterDelay,避免“改了没保存”假象

必须装的 VSCode 插件只有两个:Volar 和 typescript Vue Plugin

Vue 3 + `

实操建议:

  • 安装 Volar(作者:johnsoncodehk),启用它
  • 再装 TypeScript Vue Plugin (Volar)(同一作者),这是让 .vue 文件内 获得 TS 类型检查的关键
  • 如果项目用的是 Vue 2,别硬套 Volar;改用 Vetur,并确保 vetur.experimental.templateInterpolationService 设为 true
  • 重启 VSCode,否则 Volar 的语言服务器不会加载

热重载失效常见原因:HMR 配置被覆盖或监听路径不对

Vite 默认开启 HMR,但某些场景下会静默失败:比如你在 vite.config.ts 里写了 server.watch.ignored 却误加了 **/*.vue;或者用了 alias 指向了 symlink 目录,而系统未开启 server.watch.usePolling;又或者你在 WSL 中开发却没配 server.host: '0.0.0.0',导致 windows 端浏览器无法连接。

立即学习前端免费学习笔记(深入)”;

实操建议:

  • 检查 vite.config.ts 中是否意外设置了 hmr: falseserver.watch.ignored 包含 vue 文件
  • WSL 用户加一行:server: { host: '0.0.0.0', port: 5173 },并在 Windows 浏览器访问 http://localhost:5173
  • 若使用 NFS 或 docker 挂载,加上 server.watch.usePolling = true(性能略降,但稳定)
  • 修改 src/App.vue 试试,排除是某个子组件因 defineComponent 写法或 setup() 返回值问题导致局部 HMR 失效

调试 Vue 组件时断点不命中?检查 VSCode 的 launch.json 配置

VSCode 调试依赖 .vscode/launch.json 启动 chrome 并注入 sourcemap。如果点了调试按钮却没反应,或断点灰掉,通常是路径映射(sourceMapswebRoot)没对上。

实操建议:

  • 生成标准配置:在调试面板点「创建 launch.json」→「Chrome」→ 选中 “vuejs: chrome” 模板(Volar 提供)
  • 确认 webRoot 指向项目根目录,例如 "${workspaceFolder}",不是 "${workspaceFolder}/src"
  • 确保 vite.config.tsbuild.sourcemaptrue(开发模式默认开启,但显式写出来更安心)
  • 启动调试前,先确保开发服务器已运行;VSCode 调试器不会自动拉起 vite

热重载本身很轻量,但一旦混入别名、符号链接、WSL、Docker、自定义构建脚本这些环节,链路就容易断在某个隐式环节。最有效的排查方式永远是:看终端日志有没有 HMR updated,浏览器控制台有没有 [vite] hot updated:,以及 Network 面板里有没有 hot-update.json 请求成功。

text=ZqhQzanResources