vscode本身不配置vite热更新也不决定断点是否命中,热更新由vite进程控制,断点取决于source map路径映射、launch.json地址匹配及浏览器是否加载带map的代码;npm run dev无反应需先确认命令正确、端口未被占、依赖已安装。

VSCode 本身不配置 Vite 的热更新,也不决定调试是否能断点——它只负责编辑、终端调度和浏览器 attach;热更新由 vite 进程控制,断点是否命中只取决于 source map 路径映射是否正确、launch.json 是否匹配真实地址、浏览器是否加载了带 map 的代码。
npm run dev 没反应?先确认命令和端口
热更新“没反应”绝大多数不是 VSCode 设置问题,而是开发服务器根本没跑起来。
-
package.json中"dev": "vite"必须存在且正确;"dev": "vite dev"或"dev": "vite build"都会失败 - 终端执行
npm run dev后,必须看到类似Local: http://localhost:5173/的输出;如果卡在building...或报command not found: vite,说明node_modules/.bin/vite缺失,重装依赖:npm install - 默认端口
5173被占时,Vite 不会自动换端口,直接报错;可临时指定:vite --port 3000,或在vite.config.ts中加server.port: 3000 - 改了代码没刷新?打开浏览器 DevTools → Network → 勾选 Disable cache;再看 Console 是否有未捕获错误——JS 报错会阻断 HMR
断点灰色 / 不命中?检查 launch.json 和 source map
Vite 默认开发模式用的是内存内 inline source map,不生成 .map 文件,所以绝大多数配置项都该删掉或简化。
-
launch.json必须用"type": "pwa-chrome"(旧版chrome类型已弃用) -
"url"字段必须和浏览器地址栏**完全一致**:协议(http://或https://)、域名、端口、路径都不能差;比如终端输出Local: https://localhost:5173/,那就得写"url": "https://localhost:5173" -
"webRoot": "${workspaceFolder}"是必须的;写成"${workspaceFolder}/src"或漏掉都会导致断点“未绑定” -
sourceMapPathOverrides字段在纯 Vite 项目里通常可以整个删掉;如果用了@/别名或 monorepo,才需微调,例如:"@/components/*": "${webRoot}/src/components/*" - 别用
file://协议打开页面——Vite 是 HTTP 服务,file://下 source map 根本不会加载
Volar 不生效 / ref 推导报红?Take Over Mode 是关键
Vue 3 + Vite 项目中,Volar 是唯一能支持 <script setup></script> 类型推导和 template 内跳转的插件,但它默认不接管语言服务。
- 必须在 VS Code 设置中搜索
volar.enableTakeOverMode并启用 - 如果之前装过
Vetur,务必禁用或卸载——两者共存会导致语法高亮消失、Ctrl+Click失效、template 断点不工作 - 项目根目录必须有
tsconfig.json(TS)或jsconfig.json(JS),否则类型能力大幅降级;右下角状态栏应显示Workspace version的 TS 版本,不是Bundled - 没有
jsconfig.json的 JS 项目,新建一个最简配置即可:{ "compilerOptions": { "allowJs": true, "checkJs": false, "baseUrl": ".", "paths": { "@/*": ["src/*"] } }, "include": ["src/**/*"], "exclude": ["node_modules"] }
想点一下就启动 vite?用 tasks.json 封装,别装“Vite 插件”
目前没有任何 VSCode 插件能替代 vite CLI 启动开发服务器;所谓“一键启动”,是靠 VSCode 内置任务系统封装终端命令实现的。
- 不要搜“Vite 插件”安装——那些多是语法补全或配置提示工具,不参与服务启动
- 在项目根目录建
.vscode/tasks.json,内容如下:{ "version": "2.0.0", "tasks": [ { "label": "npm: dev", "type": "shell", "command": "npm run dev", "isBackground": true, "problemMatcher": ["$vite"] } ] } - 按
Ctrl+Shift+P→ 输入Tasks: Run Task→ 选npm: dev,就能前台运行并随时Ctrl+C中断 - 如果用
pnpm或yarn,把"command"改成"pnpm run dev"或"yarn dev",别混用包管理器
最容易被忽略的一点:Vite 的热更新和调试链路是松耦合的——vite 进程跑着,不代表浏览器加载的就是带 source map 的版本;launch.json 配对了,不代表你没在 DevTools 里手误禁用 JS;所有环节都得对齐,少一个,断点就变灰,保存就不触发 HMR。











