@@ -33,8 +33,12 @@ export default class Server {
3333 }
3434
3535 getRequestHandler ( ) {
36- return ( req , res ) => {
37- this . run ( req , res )
36+ return ( req , res , parsedUrl ) => {
37+ if ( ! parsedUrl || parsedUrl . query === null ) {
38+ parsedUrl = parse ( req . url , true )
39+ }
40+
41+ this . run ( req , res , parsedUrl )
3842 . catch ( ( err ) => {
3943 if ( ! this . quiet ) console . error ( err )
4044 res . statusCode = 500
@@ -102,8 +106,8 @@ export default class Server {
102106 await this . serveStatic ( req , res , p )
103107 } ,
104108
105- '/:path*' : async ( req , res ) => {
106- const { pathname, query } = parse ( req . url , true )
109+ '/:path*' : async ( req , res , params , parsedUrl ) => {
110+ const { pathname, query } = parsedUrl
107111 await this . render ( req , res , pathname , query )
108112 }
109113 }
@@ -126,19 +130,19 @@ export default class Server {
126130 } )
127131 }
128132
129- async run ( req , res ) {
133+ async run ( req , res , parsedUrl ) {
130134 if ( this . hotReloader ) {
131135 await this . hotReloader . run ( req , res )
132136 }
133137
134- const fn = this . router . match ( req , res )
138+ const fn = this . router . match ( req , res , parsedUrl )
135139 if ( fn ) {
136140 await fn ( )
137141 return
138142 }
139143
140144 if ( req . method === 'GET' || req . method === 'HEAD' ) {
141- await this . render404 ( req , res )
145+ await this . render404 ( req , res , parsedUrl )
142146 } else {
143147 res . statusCode = 501
144148 res . end ( STATUS_CODES [ 501 ] )
@@ -203,8 +207,8 @@ export default class Server {
203207 }
204208 }
205209
206- async render404 ( req , res ) {
207- const { pathname, query } = parse ( req . url , true )
210+ async render404 ( req , res , parsedUrl = parse ( req . url , true ) ) {
211+ const { pathname, query } = parsedUrl
208212 res . statusCode = 404
209213 this . renderError ( null , req , res , pathname , query )
210214 }
0 commit comments