Cloudflare Workers
Для развёртывания на Cloudflare Workers с Workers Sites используйте adapter-cloudflare-workers
.
Использование
Заголовок раздела «Использование»Установите с помощью команды npm i -D @sveltejs/adapter-cloudflare-workers
, затем добавьте адаптер в ваш файл svelte.config.js
:
import adapter from '@sveltejs/adapter-cloudflare-workers';
export default { kit: { adapter: adapter({ // см. описание доступных параметров ниже }) }};
Путь к вашему конфигурационному файлу Wrangler. Если вы хотите использовать имя файла конфигурации Wrangler, отличное от wrangler.jsonc
, wrangler.json
или wrangler.toml
, вы можете указать его с помощью этой опции.
platformProxy
Заголовок раздела «platformProxy»Настройки для эмулируемых локальных привязок platform.env
. Полный список опций см. в документации по API getPlatformProxy Wrangler.
Базовая конфигурация
Заголовок раздела «Базовая конфигурация»Этот адаптер ожидает наличия конфигурационного файла Wrangler в корне проекта. Он должен выглядеть примерно так:
{ "name": "<your-service-name>", "account_id": "<your-account-id>", "main": "./.cloudflare/worker.js", "site": { "bucket": "./.cloudflare/public" }, "build": { "command": "npm run build" }, "compatibility_date": "2021-11-12"}
<your-service-name>
может быть любым. <your-account-id>
можно найти, выполнив команду wrangler whoami
с помощью инструмента Wrangler CLI или войдя в вашу панель управления Cloudflare и взяв его из конца URL:
https://dash.cloudflare.com/<your-account-id>/home
Вам нужно установить Wrangler и войти в систему, если вы ещё этого не сделали:
npm i -D wranglerwrangler login
Затем вы можете собрать и развернуть свое приложение:
wrangler deploy
API среды выполнения
Заголовок раздела «API среды выполнения»Объект env
содержит привязки вашего проекта, такие как пространства имён KV/DO и т. д. Он передаётся в SvelteKit через свойство platform
вместе с ctx
, caches
и cf
, что позволяет вам получать к нему доступ в хуках и эндпойнтах:
export async function POST({ request, platform }) { const x = platform.env.YOUR_DURABLE_OBJECT_NAMESPACE.idFromName('x');}
Чтобы сделать эти типы доступными для вашего приложения, установите @cloudflare/workers-types
и укажите их в вашем файле src/app.d.ts
:
import { KVNamespace, DurableObjectNamespace } from '@cloudflare/workers-types';
declare global { namespace App { interface Platform { env?: { YOUR_KV_NAMESPACE: KVNamespace; YOUR_DURABLE_OBJECT_NAMESPACE: DurableObjectNamespace; }; } }}
export {};
Локальное тестирование
Заголовок раздела «Локальное тестирование»Значения, специфичные для Cloudflare Workers, в свойстве platform
эмулируются в режимах разработки и предпросмотра. Локальные привязки создаются на основе вашего конфигурационного файла Wrangler и используются для заполнения platform.env
во время разработки и предпросмотра. Используйте опцию конфигурации адаптера platformProxy
, чтобы изменить настройки для привязок.
Для тестирования сборки используйте Wrangler версии 4. После сборки сайта выполните команду wrangler dev
.
Решение проблем
Заголовок раздела «Решение проблем»Совместимость с Node.js
Заголовок раздела «Совместимость с Node.js»Если вы хотите включить совместимость с Node.js, добавьте флаг совместимости nodejs_compat
в ваш конфигурационный файл Wrangler:
{ "compatibility_flags": ["nodejs_compat"]}
Ограничения размера воркера
Заголовок раздела «Ограничения размера воркера»При развёртывании вашего приложения сервер, созданный SvelteKit, собирается в один файл. Wrangler не сможет опубликовать ваш воркер, если после минификации он превысит ограничения по размеру. Обычно вы вряд ли столкнётесь с этим ограничением, но некоторые крупные библиотеки могут его вызвать. В таком случае попробуйте уменьшить размер воркера, импортируя такие библиотеки только на стороне клиента. Подробности см. в FAQ.
Доступ к файловой системе
Заголовок раздела «Доступ к файловой системе»В Cloudflare Workers нельзя использовать fs
— необходимо предварительно рендерить соответствующие маршруты.