Я рано начал работать над приложением SSR Laravel 10/Inertia 1/Vue 3 и заметил, что ошибка несоответствия узла Hydration появляется из ниоткуда. После того, как я немного удалил вещи, у меня осталось следующее:
веб.php:
Route::get('/', function () {
return Inertia::render('Welcome');
});
Макет.vue:
<template>
<div>
<slot/>
</div>
</template>
Добро пожаловать.vue:
<template>
<section>
<h1 class = "text-3xl">Hello, World!</h1>
</section>
</template>
Удаление макета из app.js исправляет это, но я действительно не понимаю, как это сделать. Кроме того, кажется, что добавление макета, просто используя его как компонент, работает нормально.





Разобрался - я добавлял макет в файл app.js, но не обновлял файл ssr.js, чтобы отразить эти изменения. Таким образом, файл приложения добавлял макет, а файл ssr — нет. Для справки, вот как сейчас выглядит файл ssr.js (обновлен раздел разрешения):
import { createInertiaApp } from '@inertiajs/vue3'
import createServer from '@inertiajs/vue3/server'
import { renderToString } from '@vue/server-renderer'
import { createSSRApp, h } from 'vue'
import {resolvePageComponent} from "laravel-vite-plugin/inertia-helpers";
import Layout from "./Shared/Layout.vue";
createServer(page =>
createInertiaApp({
page,
render: renderToString,
resolve: name => {
const page = resolvePageComponent(
`./Pages/${name}.vue`,
import.meta.glob('./Pages/**/*.vue')
);
page.then((module) => {
if (module.default.layout === undefined) {
module.default.layout = Layout;
}
});
return page;
},
setup({ App, props, plugin }) {
return createSSRApp({
render: () => h(App, props),
}).use(plugin)
},
}),
)
Также обратите внимание, что вам нужно перезапустить inertia:start-ssr всякий раз, когда вы обновляете макет (насколько я могу судить). Может быть, лучше просто временно отключить SSR во время работы с файлами макета?