Files
ntspi-app/resources/js/ssr.js
T
F4iljiandQwen-Coder d7c6d23a6b fix(ssr): добавить route mixin для SSR совместимости Ziggy
- Создан RouteMixin.js для предоставления route() всем компонентам
- Обновлён ssr.js с правильным импортом Router и созданием route функции
- Исправлен BackButton.vue с проверкой this.route перед использованием
- Добавлена обработка ошибок для route() с fallback на '#'

Решает ошибку: ReferenceError: route is not defined at Proxy.resolvedLink

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-07 22:41:14 +05:00

46 lines
1.6 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 { default as Router } from '../../vendor/tightenco/ziggy/dist/index.m.js';
import { createRouteMixin } from './mixins/RouteMixin.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),
});
ssrApp.config.errorHandler = () => null;
ssrApp.config.warnHandler = () => null;
const ziggyConfig = {
...page.props.ziggy,
};
// SSR-safe location handling
if (page.props.ziggy?.location) {
ziggyConfig.location = new URL(page.props.ziggy.location);
} else {
ziggyConfig.location = new URL(process.env.APP_URL || 'http://localhost');
}
// Добавляем route mixin для всех компонентов
const routeMixin = createRouteMixin(page, Router);
ssrApp.mixin(routeMixin);
return ssrApp
.use(plugin)
.use(ZiggyVue, ziggyConfig);
},
}),
);