构建并部署
Cloudflare Workers
在 GitHub 上编辑此页面要部署到 Cloudflare Workers,请使用 adapter-cloudflare-workers
。
除非你有特殊理由使用
adapter-cloudflare-workers
,否则建议你使用adapter-cloudflare
。这两个适配器具有同等的功能,但 Cloudflare Pages 提供了诸如与 GitHub 集成、自动构建和部署、预览部署、即时回滚等功能。
用法永久链接
使用 npm i -D @sveltejs/adapter-cloudflare-workers
安装,然后将适配器添加到你的 svelte.config.js
ts
importCannot find module '@sveltejs/adapter-cloudflare-workers' or its corresponding type declarations.2307Cannot find module '@sveltejs/adapter-cloudflare-workers' or its corresponding type declarations.adapter from'@sveltejs/adapter-cloudflare-workers' ;export default {kit : {adapter :adapter ({config : '<your-wrangler-name>.toml',platformProxy : {persist : './your-custom-path'}})}};
选项永久链接
config永久链接
自定义 wrangler.toml
配置文件的路径。
platformProxy永久链接
模拟的 platform.env
本地绑定的首选项。有关选项的完整列表,请参阅 getPlatformProxy Wrangler API 文档。
基本配置永久链接
此适配器希望在项目根目录中找到一个 wrangler.toml 文件。它应该看起来像这样
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"
workers_dev = true
<your-service-name>
可以是任何内容。<your-account-id>
可以通过登录你的 Cloudflare 仪表盘 并从 URL 末尾获取它来找到
https://dash.cloudflare.com/<your-account-id>
您应该将
.cloudflare
目录(或您为main
和site.bucket
指定的任何目录)添加到您的.gitignore
中。
您需要安装 wrangler 并登录,如果您还没有登录的话
npm i -g wrangler
wrangler login
然后,您可以构建您的应用程序并部署它
wrangler deploy
自定义配置永久链接
如果您想使用 wrangler.toml
以外的配置文件,可以使用 config
选项 指定。
如果您想启用 Node.js 兼容性,您可以在 wrangler.toml
中添加“nodejs_compat”标志
compatibility_flags = [ "nodejs_compat" ]
运行时 API永久链接
env
对象包含项目的 绑定,其中包括 KV/DO 命名空间等。它通过 platform
属性传递给 SvelteKit,以及 context
、caches
和 cf
,这意味着您可以在钩子和端点中访问它
ts
export async functionBinding element 'request' implicitly has an 'any' type.POST ({, request }) { platform
Binding element 'platform' implicitly has an 'any' type.7031
7031Binding element 'request' implicitly has an 'any' type.
Binding element 'platform' implicitly has an 'any' type.constx =platform .env .YOUR_DURABLE_OBJECT_NAMESPACE .idFromName ('x');}
SvelteKit 内置的
$env
模块应该优先用于环境变量。
要包含绑定类型声明,请在 src/app.d.ts
中引用它们
declare global {
namespace App {
interface Platform {
env?: {
YOUR_KV_NAMESPACE: KVNamespace;
YOUR_DURABLE_OBJECT_NAMESPACE: DurableObjectNamespace;
};
}
}
}
export {};
本地测试永久链接
在开发和预览模式期间,platform
属性中的 Cloudflare Workers 特定值被模拟。本地 绑定 是根据 wrangler.toml
文件中的配置创建的,并用于在开发和预览期间填充 platform.env
。使用适配器配置 platformProxy
选项 更改绑定首选项。
要测试构建,您应该使用 wrangler 版本 3。构建网站后,运行 wrangler dev
。
故障排除永久链接
工作线程大小限制永久链接
在部署到工作线程时,SvelteKit 生成的服务器会打包到一个文件中。如果在缩小后超过 大小限制,Wrangler 将无法发布你的工作线程。通常情况下,你不太可能达到此限制,但某些大型库可能会导致这种情况发生。在这种情况下,你可以尝试仅在客户端导入此类库来减小工作线程的大小。有关更多信息,请参阅 常见问题解答。
访问文件系统永久链接
你无法在 Cloudflare 工作线程中使用 fs
— 你必须 预渲染相关路由。