@@ -24,6 +24,7 @@ import {
2424} from '../http'
2525import type { InlineConfig , ResolvedConfig } from '../config'
2626import { isResolvedConfig , resolveConfig } from '../config'
27+ import type { Hostname } from '../utils'
2728import {
2829 diffDnsOrderChange ,
2930 getServerUrlByHost ,
@@ -206,6 +207,8 @@ export interface ResolvedServerOptions
206207 > {
207208 fs : Required < FileSystemServeOptions >
208209 middlewareMode : NonNullable < ServerOptions [ 'middlewareMode' ] >
210+ /** @internal */
211+ hostname : Hostname
209212 sourcemapIgnoreList : Exclude <
210213 ServerOptions [ 'sourcemapIgnoreList' ] ,
211214 false | undefined
@@ -643,14 +646,18 @@ export async function _createServer(
643646 }
644647 } ,
645648 async listen ( port ?: number , isRestart ?: boolean ) {
649+ if ( httpServer ) {
650+ httpServer . prependListener ( 'listening' , ( ) => {
651+ server . resolvedUrls = resolveServerUrls (
652+ httpServer ,
653+ config . server ,
654+ httpsOptions ,
655+ config ,
656+ )
657+ } )
658+ }
646659 await startServer ( server , port )
647660 if ( httpServer ) {
648- server . resolvedUrls = await resolveServerUrls (
649- httpServer ,
650- config . server ,
651- httpsOptions ,
652- config ,
653- )
654661 if ( ! isRestart && config . server . open ) server . openBrowser ( )
655662 }
656663 return server
@@ -998,7 +1005,6 @@ async function startServer(
9981005 }
9991006
10001007 const options = server . config . server
1001- const hostname = await resolveHostname ( options . host )
10021008 const configPort = inlinePort ?? options . port
10031009 // When using non strict port for the dev server, the running port can be different from the config one.
10041010 // When restarting, the original port may be available but to avoid a switch of URL for the running
@@ -1012,7 +1018,7 @@ async function startServer(
10121018 const serverPort = await httpServerStart ( httpServer , {
10131019 port,
10141020 strictPort : options . strictPort ,
1015- host : hostname . host ,
1021+ host : options . hostname . host ,
10161022 logger : server . config . logger ,
10171023 } )
10181024 server . _currentServerPort = serverPort
@@ -1090,11 +1096,11 @@ export const serverConfigDefaults = Object.freeze({
10901096 // hotUpdateEnvironments
10911097} satisfies ServerOptions )
10921098
1093- export function resolveServerOptions (
1099+ export async function resolveServerOptions (
10941100 root : string ,
10951101 raw : ServerOptions | undefined ,
10961102 logger : Logger ,
1097- ) : ResolvedServerOptions {
1103+ ) : Promise < ResolvedServerOptions > {
10981104 const _server = mergeWithDefaults (
10991105 {
11001106 ...serverConfigDefaults ,
@@ -1106,6 +1112,7 @@ export function resolveServerOptions(
11061112
11071113 const server : ResolvedServerOptions = {
11081114 ..._server ,
1115+ hostname : await resolveHostname ( _server . host ) ,
11091116 fs : {
11101117 ..._server . fs ,
11111118 // run searchForWorkspaceRoot only if needed
0 commit comments