Skip to content

Commit f68c0d5

Browse files
fix: handle server.ws: false in mergeConfig (#23511)
Signed-off-by: vjymisal0 <misalvijay153@gmail.com> Co-authored-by: 翠 <green@sapphi.red>
1 parent 6f831f9 commit f68c0d5

2 files changed

Lines changed: 29 additions & 5 deletions

File tree

‎packages/vite/src/node/__tests__/config.spec.ts‎

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1073,6 +1073,31 @@ describe('mergeConfig', () => {
10731073
expect(config.server.ws?.overlay).toBeUndefined()
10741074
})
10751075

1076+
test('`mergeConfig` does not crash when `server.ws` is false and `server.hmr` is merged', () => {
1077+
const baseConfig = defineConfig({
1078+
server: {
1079+
ws: false,
1080+
hmr: {
1081+
host: 'localhost',
1082+
},
1083+
},
1084+
})
1085+
1086+
const newConfig = defineConfig({
1087+
server: {
1088+
hmr: {
1089+
port: 5173,
1090+
},
1091+
},
1092+
})
1093+
1094+
const mergedConfig = mergeConfig(baseConfig, newConfig)
1095+
1096+
expect(mergedConfig.server.ws).toBe(false)
1097+
expect(mergedConfig.server.hmr).toBeTypeOf('object')
1098+
expect(mergedConfig.server.hmr).toBeTruthy()
1099+
})
1100+
10761101
test('resolveConfig properly syncs hmr and ws', async () => {
10771102
const config = await resolveConfig(
10781103
{

‎packages/vite/src/node/utils.ts‎

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1479,11 +1479,10 @@ function mergeConfigRecursively(
14791479
}
14801480
if (rootPath === 'server.hmr') {
14811481
for (const key of wsOptionKeys) {
1482-
Object.defineProperty(
1483-
merged,
1484-
key,
1485-
Object.getOwnPropertyDescriptor(defaults, key)!,
1486-
)
1482+
const descriptor = Object.getOwnPropertyDescriptor(defaults, key)
1483+
if (descriptor) {
1484+
Object.defineProperty(merged, key, descriptor)
1485+
}
14871486
}
14881487
}
14891488

0 commit comments

Comments
 (0)