Files
ntspi-app/resources/js/ssr.js
T
F4ilji a372f725cd fix(ssr): embed Ziggy routes as fallback for SSR context
ZiggyVue needs routes in its config, but page.props.ziggy from the
server may not carry them in the SSR worker. Importing the static
Ziggy config ensures routes are always available.
2026-07-05 21:56:51 +05:00

43 lines
1.4 KiB
JavaScript
Executable File

import '../css/app.css';
import { createInertiaApp } from '@inertiajs/vue3'
import createServer from '@inertiajs/vue3/server'
import { renderToString } from '@vue/server-renderer'
import { createSSRApp, h } from 'vue'
import { ZiggyVue } from '../../vendor/tightenco/ziggy/dist/vue.m';
import { Ziggy } from './ziggy';
import { createSsrErrorHandler, logSsrError } from './ssr/errorHandler.js';
createServer(page =>
createInertiaApp({
page,
render: renderToString,
resolve: name => {
const pages = import.meta.glob('./Pages/**/*.vue')
return pages[`./Pages/${name}.vue`]()
},
setup({ App, props, plugin }) {
const ssrApp = createSSRApp({
render: () => h(App, props),
});
const ssrErrorHandler = createSsrErrorHandler();
ssrApp.config.errorHandler = ssrErrorHandler;
ssrApp.config.warnHandler = () => null;
const ziggyConfig = {
...Ziggy,
...page.props.ziggy,
location: page.props.ziggy?.location
? new URL(page.props.ziggy.location)
: new URL(process.env.APP_URL || 'http://localhost'),
};
return ssrApp
.use(plugin)
.use(ZiggyVue, ziggyConfig);
},
}).catch(error => {
logSsrError(error);
throw error;
})
);