SvelteKit: отключить SSR

Я сделал приложение в Svelte и теперь хотел портировать его на SvelteKit. В моем приложении используются объекты window и document, но они недоступны в SSR. Во-первых, выбрасывал ReferenceError: window is not defined, но я это исправил, проверив, запущено ли приложение в браузере. Но из-за этого мое приложение не работает.

Буду рад получить помощь.

Спасибо.

🤔 А знаете ли вы, что...
С Svelte можно создавать адаптивные интерфейсы для различных устройств и экранов.


1
45
1

Ответ:

Решено

Вы можете отключить рендеринг на стороне сервера с помощью хука handle, определенного в src/hooks.js:

export async function handle({ event, resolve }) {
    return resolve(event, { ssr: false });
}

Можно даже сделать это условно, обычно проверив event и приняв решение по запросу.


Если ваш вариант использования требует, чтобы все происходило на стороне клиента, отключение SSR имеет смысл. Но обратите внимание, что его отключение строго из-за кода не рекомендуется только для браузера — в этом случае обычно лучше выполнять код условно с проверками browser и динамическим импортом только для зависимостей на стороне клиента. Я хотел бы изучить, почему ваше приложение перестало работать, прежде чем переходить к отключению SSR.