File tree Expand file tree Collapse file tree 3 files changed +17
-10
lines changed Expand file tree Collapse file tree 3 files changed +17
-10
lines changed Original file line number Diff line number Diff line change 1+ ---
2+ ' @sveltejs/kit ' : patch
3+ ---
4+
5+ fix: fall back to non-relative resolution when calling ` resolve(...) ` outside an event context
Original file line number Diff line number Diff line change 11import { base , assets , relative } from './internal/server.js' ;
22import { resolve_route } from '../../../utils/routing.js' ;
3- import { get_request_store } from '@sveltejs/kit/internal/server' ;
3+ import { try_get_request_store } from '@sveltejs/kit/internal/server' ;
44
55/** @type {import('./client.js').asset } */
66export function asset ( file ) {
@@ -13,19 +13,17 @@ export function resolve(id, params) {
1313 const resolved = resolve_route ( id , /** @type {Record<string, string> } */ ( params ) ) ;
1414
1515 if ( relative ) {
16- const { event , state } = get_request_store ( ) ;
16+ const store = try_get_request_store ( ) ;
1717
18- if ( state . prerendering ?. fallback ) {
19- return resolved ;
20- }
21-
22- const segments = event . url . pathname . slice ( base . length ) . split ( '/' ) . slice ( 2 ) ;
23- const prefix = segments . map ( ( ) => '..' ) . join ( '/' ) || '.' ;
18+ if ( store && ! store . state . prerendering ?. fallback ) {
19+ const segments = store . event . url . pathname . slice ( base . length ) . split ( '/' ) . slice ( 2 ) ;
20+ const prefix = segments . map ( ( ) => '..' ) . join ( '/' ) || '.' ;
2421
25- return prefix + resolved ;
22+ return prefix + resolved ;
23+ }
2624 }
2725
28- return resolved ;
26+ return base + resolved ;
2927}
3028
3129export { base , assets , resolve as resolveRoute } ;
Original file line number Diff line number Diff line change @@ -5,6 +5,7 @@ import fs from 'node:fs';
55import { COOKIE_NAME } from './routes/cookies/shared' ;
66import { _set_from_init } from './routes/init-hooks/+page.server' ;
77import { getRequestEvent } from '$app/server' ;
8+ import { resolve } from '$app/paths' ;
89
910// @ts -ignore this doesn't exist in old Node
1011Promise . withResolvers ??= ( ) => {
@@ -16,6 +17,9 @@ Promise.withResolvers ??= () => {
1617 return d ;
1718} ;
1819
20+ // check that this doesn't throw when called outside an event context
21+ resolve ( '/' ) ;
22+
1923/**
2024 * Transform an error into a POJO, by copying its `name`, `message`
2125 * and (in dev) `stack`, plus any custom properties, plus recursively
You can’t perform that action at this time.
0 commit comments