Skip to main content

Cloudflare Workers

L’adaptateur adapter-cloudflare-workers a été déprécié en faveur de adapter-cloudflare. Nous recommandons d’utiliser adapter-cloudflare pour déployer sur les Cloudflare Workers avec Static Assets puisque les Cloudflare Workers Sites vont être dépréciés en sa faveur.

Pour déployer sur les Cloudflare Workers avec Workers Sites, utilisez l’adaptateur adapter-cloudflare-workers.

Usage

Installez l’adaptateur avec npm i -D @sveltejs/adapter-cloudflare-workers, puis ajoutez-le à votre fichier svelte.config.js :

svelte.config
import import adapteradapter from '@sveltejs/adapter-cloudflare-workers';

export default {
	
kit: {
    adapter: any;
}
kit
: {
adapter: anyadapter: import adapteradapter({ // voir plus bas pour les options que vous pouvez définir ici }) } };

Options

config

Chemin vers votre fichier de configuration Wrangler. Si vous souhaitez utiliser un nom de fichier de configuration Wrangler autre que wrangler.jsonc, wrangler.json, ou wrangler.toml, vous pouvez le préciser en utilisant cette option.

platformProxy

Les préférences pour les liaisons locales émulées platform.env. Voir la documentation d’API de Wrangler qui traite de getPlatformProxy pour plus de détails.

Configuration de base

Cet adaptateur s’attend à trouver un fichier de configuration Wrangler à la racine du projet. Il devrait ressembler à quelque chose comme ça :

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> peut être n’importe quoi. <your-account-id> peut être déterminé en exécutant wrangler whoami avec le CLI de Wrangler ou en vous connectant à votre espace Cloudflare et en le récupérant à la fin de l’URL :

https://dash.cloudflare.com/<your-account-id>/home

Vous devriez ajouter les dossiers .cloudflare (ou tout dossier que vous auriez précisé en tant que main et site.bucket) et .wrangler à votre fichier .gitignore.

Vous aurez besoin d’installer Wrangler et de vous y connecter, si vous l’avez pas déjà fait :

npm i -D wrangler
wrangler login

Vous pourrez ensuite compiler votre application et la déployer :

wrangler deploy

APIs de runtime

L’objet env contient les liaisons de votre projet, qui consistent en des namespaces KV/DO, etc. Il est passé à SvelteKit via la propriété platform, de même que context, caches, et cf, ce qui signifie que vous pouvez y accéder dans les hooks et les endpoints :

export async function 
function POST({ request, platform }: {
    request: any;
    platform: any;
}): Promise<void>
POST
({ request, platform }) {
const const x: anyx = platform: anyplatform.env.YOUR_DURABLE_OBJECT_NAMESPACE.idFromName('x'); }

Le module intégré de $env devrait être préféré pour les variables d’environnement.

Pour rendre ces types disponibles dans votre application, installez @cloudflare/workers-types et référencez-les dans votre fichier src/app.d.ts :

src/app.d
import { interface KVNamespace<Key extends string = string>KVNamespace, interface DurableObjectNamespace<T extends Rpc.DurableObjectBranded | undefined = undefined>DurableObjectNamespace } from '@cloudflare/workers-types';

declare global {
	namespace App {
		interface interface App.Platform

If your adapter provides platform-specific context via event.platform, you can specify it here.

Platform
{
App.Platform.env?: {
    YOUR_KV_NAMESPACE: KVNamespace;
    YOUR_DURABLE_OBJECT_NAMESPACE: DurableObjectNamespace;
} | undefined
env
?: {
type YOUR_KV_NAMESPACE: KVNamespace<string>YOUR_KV_NAMESPACE: interface KVNamespace<Key extends string = string>KVNamespace; type YOUR_DURABLE_OBJECT_NAMESPACE: DurableObjectNamespace<undefined>YOUR_DURABLE_OBJECT_NAMESPACE: interface DurableObjectNamespace<T extends Rpc.DurableObjectBranded | undefined = undefined>DurableObjectNamespace; }; } } } export {};

Tester en local

Les valeurs spécifiques à Cloudflare dans la propriété platform sont émulées lors du développement et de la prévisualisation. Les liaisons locales sont créées en fonction de votre fichier de configuration Wrangler et sont utilisées pour remplir platform.env lors du développement et de la prévisualisation. Utilisez la configuration platformProxy de l’adaptateur pour changer vos préférences de liaison.

Pour tester le projet compilé, vous devriez utiliser la version 4 de Wrangler. Une fois que vous avez compilé votre site, lancez wrangler dev.

Résolution de problèmes

Compatibilité avec Node.js

Si vous souhaitez activer la compatibilité avec Node.js, vous pouvez ajouter l’option de compatibilité nodejs_compat à votre fichier de configuration :

wrangler
{
	"compatibility_flags": ["nodejs_compat"]
}

Limites de taille des workers

Lorsque vous déployez votre application, le serveur généré par SvelteKit est compilé en un seul fichier. Wrangler va échouer à publier votre worker s’il excède les limites de taille après minification. Il est normalement peu probable que vous dépassiez cette limite, mais certaines grosses librairies peuvent vous les faire dépasser. Dans ce cas, vous pouvez essayer de réduire la taille de votre worker en n’important ces librairies que côté client. Voir la FÀQ pour plus d’informations.

Accéder au système de fichiers

Vous ne pouvez pas utiliser fs dans les Cloudflare Workers — vous devez pré-rendre les routes en question.

Modifier cette page sur Github llms.txt

précédent suivant