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.
43 lines
1.4 KiB
JavaScript
Executable File
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;
|
|
})
|
|
); |