Vue项目保存代码之后页面自动更新

博主分享了如何在Vue项目中恢复代码自动刷新功能,通过安装webpack-dev-server解决了手动刷新页面的困扰,适合初学者理解。

我以前写代码的时候 项目保存之后都是会自动更新的 但是最近不知道是什么原因就消失了

找找了半天都是说要配置vue热部署 可是我还是无效

但是我发现了这个

npm install webpack-dev-server

webpack-dev-server 这个东西可以在你保存代码之后不需要再次去手动刷新你的页面了 虽然不知道这是啥 但是确实是有用的

纯小白勿喷QWQ

Vue 项目中,保存文件后未自动刷新(HMR 失效)通常与开发服务器配置、缓存或依赖版本不兼容有关。以下是详细的排查和解决方案: --- ### **1. 检查 `webpack-dev-server` 或 `vite` 配置** #### **Vue CLI 项目(Webpack)** - **问题**:`vue.config.js` 中的 `devServer` 配置错误或未启用 HMR。 - **解决**: 1. 确保 `hot: true` 已启用(默认值,但可显式声明): ```javascript // vue.config.js module.exports = { devServer: { hot: true, // 必须为 true client: { overlay: true, // 显示编译错误 }, }, }; ``` 2. **移除废弃选项**:如 `inline`(新版 Webpack 已移除)。 #### **Vite 项目** - **问题**:`vite.config.js` 中可能覆盖了默认 HMR 配置。 - **解决**: ```javascript // vite.config.js import { defineConfig } from 'vite'; import vue from '@vitejs/plugin-vue'; export default defineConfig({ plugins: [vue()], server: { hmr: true, // 确保为 true(默认值) watch: { usePolling: true, // 解决 Linux 文件监听问题 }, }, }); ``` --- ### **2. 清除缓存** #### **浏览器缓存** - **现象**:修改代码后浏览器仍显示旧内容。 - **解决**: 1. 强制刷新浏览器(`Ctrl + F5` 或 `Cmd + Shift + R`)。 2. 在开发者工具(`F12`)中: - 切换到 **Network** 标签页。 - 勾选 **Disable cache**(如图)。 ![Disable Cache](https://i.imgur.com/JQZ1l0m.png) #### **Node.js 模块缓存** - **现象**:依赖更新后 HMR 不生效。 - **解决**: 1. 删除 `node_modules` 和锁文件: ```bash rm -rf node_modules package-lock.json yarn.lock ``` 2. 重新安装依赖: ```bash npm install ``` --- ### **3. 检查文件监视配置** #### **系统文件监听限制** - **现象**:在 Linux/macOS 上,Webpack 或 Vite 无法监听大量文件。 - **解决**: 1. **Linux**: - 编辑 `/etc/sysctl.conf`,添加: ``` fs.inotify.max_user_watches=524288 ``` - 执行命令生效: ```bash sudo sysctl -p ``` 2. **macOS**: - 运行以下命令: ```bash echo kern.maxfiles=65536 | sudo tee -a /etc/sysctl.conf echo kern.maxfilesperproc=65536 | sudo tee -a /etc/sysctl.conf sudo sysctl -w kern.maxfiles=65536 sudo sysctl -w kern.maxfilesperproc=65536 ``` #### **项目目录权限** - **现象**:开发服务器无权限读取文件变更。 - **解决**: ```bash chmod -R 755 /path/to/project ``` --- ### **4. 更新依赖版本** - **问题**:旧版 `vue-loader`、`@vitejs/plugin-vue` 或 `webpack-dev-server` 可能存在 HMR 兼容性问题。 - **解决**: 1. **Vue CLI 项目**: ```bash npm update vue-loader webpack-dev-server ``` 2. **Vite 项目**: ```bash npm update @vitejs/plugin-vue vite ``` 3. 检查 `package.json` 中版本是否兼容: - Vue 2 需 `vue-loader@15`。 - Vue 3 需 `vue-loader@16+` 或 `@vitejs/plugin-vue`。 --- ### **5. 禁用浏览器扩展冲突** - **现象**:广告拦截器或脚本管理器可能阻止 HMR 请求。 - **解决**: 1. 在无痕模式下测试: - Chrome:`Ctrl + Shift + N`。 - Firefox:`Ctrl + Shift + P`。 2. 逐个禁用扩展(如 uBlock Origin、Tampermonkey)。 --- ### **6. 手动触发 HMR(临时方案)** 如果自动刷新失效,可通过代码手动触发: ```javascript // main.js 或入口文件 if (import.meta.hot) { import.meta.hot.accept(() => { console.log('HMR: 文件已更新,手动刷新页面...'); // 可通过 location.reload() 强制刷新(不推荐) }); } ``` --- ### **7. 检查控制台错误** - **浏览器控制台**: - 查看是否有 `[HMR]` 相关错误。 - 检查是否有 `404` 错误(如未正确加载 `webpack-dev-server/client`)。 - **终端控制台**: - 运行 `npm run serve` 或 `vite`,观察是否有警告(如端口占用、文件路径错误)。 --- ### **8. 创建最小化测试项目** 1. 生成个新项目测试 HMR: ```bash # Vue CLI vue create hmr-test cd hmr-test npm run serve # Vite npm create vite@latest hmr-test --template vue cd hmr-test npm install npm run dev ``` 2. 如果测试项目正常,说明原项目配置有问题。 --- ### **完整排查流程** 1. **确认开发服务器版本**: ```bash npm list webpack-dev-server # Vue CLI npm list vite # Vite ``` 2. **检查 `vue.config.js` 或 `vite.config.js`**: - 移除所有废弃选项(如 `inline`)。 - 确保 `hot: true` 和 `client.overlay: true`。 3. **清除缓存并重启**: ```bash rm -rf node_modules package-lock.json npm install npm run serve # 或 npm run dev ``` ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值