// vite.config.js
server: { hmr: { host: 'localhost', port: 5173 } }
# 代理需支持 upgrade
ws: true
改了组件代码浏览器毫无反应,控制台一直打印 [vite] connecting,只能手动刷新才看到变化。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。
追下去是这么回事:HMR 依赖的 WebSocket 被代理或者安全策略拦掉,客户端连不上服务端,热更新消息根本推不过来。
「HMR 失效」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。
把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。改完隔一天再看一次,当场正常不代表能稳住。
测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。
处理上按这个顺序:看网络面板里 ws 连接是否返回 101;检查代理有没有转发 upgrade 头;直连 dev server 端口再试。
确认没问题再收工,保存文件后页面局部更新,控制台显示 connected 不再重连。
