← 中文资源

简体中文版本

Vite 在代理后报 HMR 的 WebSocket 连接失败

通过为环境配置开发服务器 host、port 与代理,修复 Vite HMR 的 WebSocket 连接失败。

阅读英文原文

症状

浏览器控制台反复出现 failed to connect to websocket,热更新停止,有时退化为整页刷新。开发服务器可能已启动,但浏览器因主机绑定、端口不匹配或代理未转发 websocket 升级而无法连上 HMR 套接字。这在容器与 TLS 终止代理之后很常见。

诊断

用 –host 0.0.0.0 暴露服务;按代理设置 hmr.clientHost/clientPort;确认代理开启 ws 转发。

vite --host 0.0.0.0 --port 5173

根因

浏览器无法向开发服务器建立 HMR websocket,原因是主机绑定、端口不匹配,或代理没有转发 websocket 升级。

修复

把开发服务器绑定到可达的主机;在代理前置时告知 Vite 浏览器应使用的 HMR 主机与端口;配置代理转发 websocket 升级。让服务器、代理与浏览器三者对齐。

验证

刷新页面确认 websocket 连接且无控制台错误,再编辑文件确认浏览器热更新而非整页刷新。HMR 生效即证明已对齐。

常见陷阱

在生产构建依赖 HMR 是误解;HMR 仅开发期,生产应使用静态构建产物。