@@ -102,22 +102,29 @@ export function use(
102102export function createAppEventHandler ( stack : Stack , options : AppOptions ) {
103103 const spacing = options . debug ? 2 : undefined ;
104104 return eventHandler ( async ( event ) => {
105- ( event . node . req as any ) . originalUrl =
106- ( event . node . req as any ) . originalUrl || event . node . req . url || "/" ;
107- const reqUrl = event . node . req . url || "/" ;
105+ const _reqPath = event . path ;
106+ let _layerPath : string ;
108107 for ( const layer of stack ) {
108+ // 1. Remove prefix from path
109109 if ( layer . route . length > 1 ) {
110- if ( ! reqUrl . startsWith ( layer . route ) ) {
110+ if ( ! _reqPath . startsWith ( layer . route ) ) {
111111 continue ;
112112 }
113- event . node . req . url = reqUrl . slice ( layer . route . length ) || "/" ;
113+ _layerPath = _reqPath . slice ( layer . route . length ) || "/" ;
114114 } else {
115- event . node . req . url = reqUrl ;
115+ _layerPath = _reqPath ;
116116 }
117- if ( layer . match && ! layer . match ( event . node . req . url as string , event ) ) {
117+
118+ // 2. Custom matcher
119+ if ( layer . match && ! layer . match ( _layerPath , event ) ) {
118120 continue ;
119121 }
120122
123+ // 3. Update event path with layer path
124+ event . _path = _layerPath ;
125+ event . node . req . url = _layerPath ; // Express compatibility
126+
127+ // 4. Handle request
121128 const val = await layer . handler ( event ) ;
122129
123130 // Already handled
@@ -181,9 +188,7 @@ export function createAppEventHandler(stack: Stack, options: AppOptions) {
181188 if ( ! event . handled ) {
182189 throw createError ( {
183190 statusCode : 404 ,
184- statusMessage : `Cannot find any path matching ${
185- event . node . req . url || "/"
186- } .`,
191+ statusMessage : `Cannot find any path matching ${ event . path || "/" } .` ,
187192 } ) ;
188193 }
189194 } ) ;
0 commit comments