> \[注意\] `adapter-cloudflare-workers` 已弃用,推荐使用 [`adapter-cloudflare`](adapter-cloudflare)。建议使用 `adapter-cloudflare` 将静态资源部署到 Cloudflare Workers,因为 Cloudflare Workers 网站将弃用,推荐使用它。 要部署到[Cloudflare Workers](https://workers.cloudflare.com/)和[Workers Sites](https://developers.cloudflare.com/workers/configuration/sites/),请使用`adapter-cloudflare-workers`。 ## 使用 安装 `npm i -D @sveltejs/adapter-cloudflare-workers` 后,将适配器添加到您的`svelte.config.js`中: ```js // @errors: 2307 /// file: svelte.config.js import adapter from '@sveltejs/adapter-cloudflare-workers'; export default { kit: { adapter: adapter({ // see below for options that can be set here }) } }; ``` ## 选项 ### 配置 路径到您的[Wrangler 配置文件](https://developers.cloudflare.com/workers/wrangler/configuration/)。如果您想使用除`wrangler.jsonc`、`wrangler.json`或`wrangler.toml`之外的 Wrangler 配置文件名,可以使用此选项指定。 ### 平台代理 偏好于模拟的 `platform.env` 本地绑定。请参阅 [getPlatformProxy](https://developers.cloudflare.com/workers/wrangler/api/#parameters-1) Wrangler API 文档以获取完整选项列表。 ## 基本配置 此适配器期望在项目根目录中找到一个[Wrangler 配置文件](https://developers.cloudflare.com/workers/configuration/sites/configuration/)。它应该看起来像这样: ```jsonc /// file: wrangler.jsonc { "name": "", "account_id": "", "main": "./.cloudflare/worker.js", "site": { "bucket": "./.cloudflare/public" }, "build": { "command": "npm run build" }, "compatibility_date": "2021-11-12" } ``` `您的服务名称`可以是任何内容。`您的账户 ID`可以通过运行`wrangler whoami`使用 Wrangler CLI 工具或通过登录您的[Cloudflare 控制台](https://dash.cloudflare.com)并从 URL 末尾获取。 ``` https://dash.cloudflare.com//home ``` > \[!注意\] 您应将 `.cloudflare` 目录(或您指定的 `main` 和 `site.bucket` 目录)以及 `.wrangler` 目录添加到您的 `.gitignore` 中。 您需要安装[Wrangler](https://developers.cloudflare.com/workers/wrangler/install-and-update/)并登录,如果您还没有的话: ```bash npm i -D wrangler wrangler login ``` 然后,您可以构建您的应用程序并部署它: `wrangler 部署` ## 运行时 API 对象 [`env`](https://developers.cloudflare.com/workers/runtime-apis/fetch-event#parameters) 包含您项目的 [bindings](https://developers.cloudflare.com/workers/runtime-apis/bindings/),这些绑定包括 KV/DO 命名空间等。它通过 `platform` 属性传递给 SvelteKit,同时还包括 [`ctx`](https://developers.cloudflare.com/workers/runtime-apis/context/)、[`caches`](https://developers.cloudflare.com/workers/runtime-apis/cache/) 和 [`cf`](https://developers.cloudflare.com/workers/runtime-apis/request/#incomingrequestcfproperties),这意味着您可以在钩子和端点中访问它: ```js // @errors: 7031 export async function POST({ request, platform }) { const x = platform.env.YOUR_DURABLE_OBJECT_NAMESPACE.idFromName('x'); } ``` > \[!注意\] 应优先使用 SvelteKit 内置的 [`$env` 模块]($env-static-private) 来处理环境变量。 为了使这些类型可用于您的应用,安装 [`@cloudflare/workers-types`](https://www.npmjs.com/package/@cloudflare/workers-types) 并在您的 `src/app.d.ts` 中引用它们: ```ts /// file: 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 在`平台`属性中的特定值在开发和预览模式下进行模拟。根据您的[Wrangler 配置文件](https://developers.cloudflare.com/workers/wrangler/)创建本地[绑定](https://developers.cloudflare.com/workers/wrangler/configuration/#bindings),并在开发和预览期间用于填充`platform.env`。使用适配器配置中的[`platformProxy`选项](#Options-platformProxy)来更改绑定偏好。 测试构建时,您应使用[Wrangler](https://developers.cloudflare.com/workers/wrangler/)版本 4。构建您的网站后,运行`wrangler dev`。 ## 故障排除 ### Node.js 兼容性 如果您想启用[Node.js 兼容性](https://developers.cloudflare.com/workers/runtime-apis/nodejs/),您可以将`nodejs_compat`兼容性标志添加到您的 Wrangler 配置文件中: ```jsonc /// file: wrangler.jsonc { "compatibility_flags": ["nodejs_compat"] } ``` ### 工人大小限制 当部署您的应用程序时,由 SvelteKit 生成的服务器被打包成一个单独的文件。如果经过压缩后超过[大小限制](https://developers.cloudflare.com/workers/platform/limits/#worker-size),Wrangler 将无法发布您的 worker。通常情况下,您不太可能达到这个限制,但一些大型库可能会导致这种情况发生。在这种情况下,您可以尝试通过仅在客户端导入这些库来减小 worker 的大小。有关更多信息,请参阅[常见问题解答](./faq#How-do-I-use-a-client-side-library-accessing-document-or-window)。 ### 访问文件系统 您不能在 Cloudflare Workers 中使用`fs`——您必须[预渲染](page-options#prerender)相关路由。