Skip to content

Commit 4fc4bc2

Browse files
committed
Fix SSR type issues
Use the correct method overload for the route properties during SSR and add type for page file imports
1 parent 127797f commit 4fc4bc2

File tree

1 file changed

+21
-7
lines changed

1 file changed

+21
-7
lines changed

resources/js/ssr.ts

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import { createInertiaApp } from '@inertiajs/vue3';
22
import createServer from '@inertiajs/vue3/server';
33
import { renderToString } from '@vue/server-renderer';
44
import { resolvePageComponent } from 'laravel-vite-plugin/inertia-helpers';
5-
import { createSSRApp, h } from 'vue';
6-
import { route as ziggyRoute } from 'ziggy-js';
5+
import { createSSRApp, DefineComponent, h } from 'vue';
6+
import { route, Router } from 'ziggy-js';
77

88
const appName = import.meta.env.VITE_APP_NAME || 'Laravel';
99

@@ -12,7 +12,7 @@ createServer((page) =>
1212
page,
1313
render: renderToString,
1414
title: (title) => `${title} - ${appName}`,
15-
resolve: (name) => resolvePageComponent(`./pages/${name}.vue`, import.meta.glob('./pages/**/*.vue')),
15+
resolve: resolvePage,
1616
setup({ App, props, plugin }) {
1717
const app = createSSRApp({ render: () => h(App, props) });
1818

@@ -22,15 +22,23 @@ createServer((page) =>
2222
location: new URL(page.props.ziggy.location),
2323
};
2424

25-
// Create route function...
26-
const route = (name: string, params?: any, absolute?: boolean) => ziggyRoute(name, params, absolute, ziggyConfig);
25+
// bind config to ziggyRoute function
26+
function appRoute(): Router;
27+
function appRoute(name: string, params?: any, absolute?: boolean): string;
28+
function appRoute(name?: string, params?: any, absolute?: boolean): Router | string {
29+
if (name === undefined) {
30+
return route();
31+
}
32+
33+
return route(name, params, absolute, ziggyConfig);
34+
}
2735

2836
// Make route function available globally...
29-
app.config.globalProperties.route = route;
37+
app.config.globalProperties.route = appRoute;
3038

3139
// Make route function available globally for SSR...
3240
if (typeof window === 'undefined') {
33-
global.route = route;
41+
global.route = appRoute;
3442
}
3543

3644
app.use(plugin);
@@ -39,3 +47,9 @@ createServer((page) =>
3947
},
4048
}),
4149
);
50+
51+
function resolvePage(name: string) {
52+
const pages = import.meta.glob<DefineComponent>('./Pages/**/*.vue');
53+
54+
return resolvePageComponent<DefineComponent>(`./Pages/${name}.vue`, pages);
55+
}

0 commit comments

Comments
 (0)