fix(ssr): remove conflicting RouteMixin that caused 'Cannot read properties of undefined (reading index)'
RouteMixin received the full Inertia page object instead of page.props, producing a Ziggy config without routes. ZiggyVue already provides the route() function with the correct config, so the duplicate mixin is unnecessary.
This commit is contained in:
@@ -4,8 +4,6 @@ import createServer from '@inertiajs/vue3/server'
|
|||||||
import { renderToString } from '@vue/server-renderer'
|
import { renderToString } from '@vue/server-renderer'
|
||||||
import { createSSRApp, h } from 'vue'
|
import { createSSRApp, h } from 'vue'
|
||||||
import { ZiggyVue } from '../../vendor/tightenco/ziggy/dist/vue.m';
|
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';
|
|
||||||
import { createSsrErrorHandler, logSsrError } from './ssr/errorHandler.js';
|
import { createSsrErrorHandler, logSsrError } from './ssr/errorHandler.js';
|
||||||
|
|
||||||
createServer(page =>
|
createServer(page =>
|
||||||
@@ -21,7 +19,6 @@ createServer(page =>
|
|||||||
render: () => h(App, props),
|
render: () => h(App, props),
|
||||||
});
|
});
|
||||||
|
|
||||||
// SSR error handler - logs to separate file
|
|
||||||
const ssrErrorHandler = createSsrErrorHandler();
|
const ssrErrorHandler = createSsrErrorHandler();
|
||||||
ssrApp.config.errorHandler = ssrErrorHandler;
|
ssrApp.config.errorHandler = ssrErrorHandler;
|
||||||
ssrApp.config.warnHandler = () => null;
|
ssrApp.config.warnHandler = () => null;
|
||||||
@@ -30,25 +27,18 @@ createServer(page =>
|
|||||||
...page.props.ziggy,
|
...page.props.ziggy,
|
||||||
};
|
};
|
||||||
|
|
||||||
// SSR-safe location handling
|
|
||||||
if (page.props.ziggy?.location) {
|
if (page.props.ziggy?.location) {
|
||||||
ziggyConfig.location = new URL(page.props.ziggy.location);
|
ziggyConfig.location = new URL(page.props.ziggy.location);
|
||||||
} else {
|
} else {
|
||||||
ziggyConfig.location = new URL(process.env.APP_URL || 'http://localhost');
|
ziggyConfig.location = new URL(process.env.APP_URL || 'http://localhost');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Добавляем route mixin для всех компонентов
|
|
||||||
const routeMixin = createRouteMixin(page, Router);
|
|
||||||
ssrApp.mixin(routeMixin);
|
|
||||||
|
|
||||||
return ssrApp
|
return ssrApp
|
||||||
.use(plugin)
|
.use(plugin)
|
||||||
.use(ZiggyVue, ziggyConfig);
|
.use(ZiggyVue, ziggyConfig);
|
||||||
},
|
},
|
||||||
}).catch(error => {
|
}).catch(error => {
|
||||||
// Catch Inertia SSR errors and log them separately
|
|
||||||
logSsrError(error);
|
logSsrError(error);
|
||||||
// Re-throw to maintain normal error flow
|
|
||||||
throw error;
|
throw error;
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
Reference in New Issue
Block a user