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 1
1
import { base , assets , relative } from './internal/server.js' ;
2
2
import { 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' ;
4
4
5
5
/** @type {import('./client.js').asset } */
6
6
export function asset ( file ) {
@@ -13,19 +13,17 @@ export function resolve(id, params) {
13
13
const resolved = resolve_route ( id , /** @type {Record<string, string> } */ ( params ) ) ;
14
14
15
15
if ( relative ) {
16
- const { event , state } = get_request_store ( ) ;
16
+ const store = try_get_request_store ( ) ;
17
17
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 ( '/' ) || '.' ;
24
21
25
- return prefix + resolved ;
22
+ return prefix + resolved ;
23
+ }
26
24
}
27
25
28
- return resolved ;
26
+ return base + resolved ;
29
27
}
30
28
31
29
export { base , assets , resolve as resolveRoute } ;
Original file line number Diff line number Diff line change @@ -5,6 +5,7 @@ import fs from 'node:fs';
5
5
import { COOKIE_NAME } from './routes/cookies/shared' ;
6
6
import { _set_from_init } from './routes/init-hooks/+page.server' ;
7
7
import { getRequestEvent } from '$app/server' ;
8
+ import { resolve } from '$app/paths' ;
8
9
9
10
// @ts -ignore this doesn't exist in old Node
10
11
Promise . withResolvers ??= ( ) => {
@@ -16,6 +17,9 @@ Promise.withResolvers ??= () => {
16
17
return d ;
17
18
} ;
18
19
20
+ // check that this doesn't throw when called outside an event context
21
+ resolve ( '/' ) ;
22
+
19
23
/**
20
24
* Transform an error into a POJO, by copying its `name`, `message`
21
25
* and (in dev) `stack`, plus any custom properties, plus recursively
You can’t perform that action at this time.
0 commit comments