- Создан 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>
46 lines
1.6 KiB
JavaScript
Executable File
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);
|
|
},
|
|
}),
|
|
); |