Cloudflare 资源绑定
默认模板在 wrangler.jsonc 中声明的 Cloudflare 资源绑定。
默认模板在 wrangler.jsonc 中配置 D1、KV、R2、Queue 和 Durable Object 等 Cloudflare 资源。worker-configuration.d.ts 根据该文件生成 CloudflareBindings 类型,业务代码通过 c.env 或 WorkerCtx.env 访问这些资源。
下文的 saavo-template-* 是模板源文件中的名称。CLI 初始化项目时,会按项目名改写 D1、R2、Queue 及 Worker 的名称,Binding 标识保持不变。例如项目名为 my-app 时,主数据库名称是 my-app-db,代码仍通过 c.env.DB 访问。
D1
DB
Prop
Type
模板默认数据库名称为 saavo-template-db,初始化脚本为 schema/db-init.sql。
ANALYTICS_DB
Prop
Type
模板默认数据库名称为 saavo-template-analytics-db,初始化脚本为 schema/analytics-init.sql。
两个 D1 配置都没有填写默认 database_id,只能用于本地开发。执行 npm run deploy:init 创建远程数据库后,部署脚本会把远程 ID 写回 wrangler.jsonc。
KV 和 R2
MAIN_KV
Prop
Type
模板默认没有远程 Namespace ID。npm run deploy:init 创建远程 KV Namespace 后会补充 id。
MAIN_R2
Prop
Type
模板默认存储桶名称为 saavo-template-storage,必须与普通变量 R2_BUCKET_NAME 完全一致。
邮件
EMAIL
Prop
Type
模板默认使用 Resend,因此 wrangler.jsonc 中的 send_email 配置处于注释状态,EMAIL 也属于可选 Binding。改用 Cloudflare Email 后,必须取消注释或由部署脚本写入该绑定,并确保允许使用 config/base.ts 中配置的发件地址。
Queue
ASYNC_POLICY_TASK_QUEUE
Prop
Type
模板默认 Queue 名称为 saavo-template-policy-task,消费者每批最多处理 1 条消息,批处理等待时间为 5 秒,最大并发数为 1,最多重试 3 次。
ASYNC_LOGGER_QUEUE
Prop
Type
模板默认 Queue 名称为 saavo-template-async-logger,消费者每批最多处理 50 条消息,批处理等待时间为 5 秒,最大并发数为 1,最多重试 3 次。
ANALYTICS_QUEUE
Prop
Type
模板默认 Queue 名称为 saavo-template-analytics-events,消费者每批最多处理 8 条消息,批处理等待时间为 5 秒,最大并发数为 1,最多重试 3 次。
每个 Queue 都同时配置了生产者和消费者。ASYNC_POLICY_TASK_QUEUE_NAME、ASYNC_LOGGER_QUEUE_NAME 和 ANALYTICS_QUEUE_NAME 必须分别与相应的 Queue 名称一致,Queue 处理函数会根据这些普通变量判断消息来自哪个队列。
Durable Object
SAAS_RATE_LIMITER_DO
Prop
Type
SAAS_COUNTER_DO
Prop
Type
SAAS_NONCE_DO
Prop
Type
SAAS_TOKEN_BUCKET_DO
Prop
Type
SAAS_TIMER_DO
Prop
Type
五个 Durable Object 类都由 src/index.tsx 导出。wrangler.jsonc 的 v1 迁移使用 new_sqlite_classes 注册这些类。
模板默认配置
| Binding | 资源类型 | 模板默认资源名称 |
|---|---|---|
DB | D1 | saavo-template-db |
ANALYTICS_DB | D1 | saavo-template-analytics-db |
MAIN_KV | KV | wrangler.jsonc 未指定资源名称 |
MAIN_R2 | R2 | saavo-template-storage |
EMAIL | Email Sending | 无,模板默认使用 Resend |
ASYNC_POLICY_TASK_QUEUE | Queue | saavo-template-policy-task |
ASYNC_LOGGER_QUEUE | Queue | saavo-template-async-logger |
ANALYTICS_QUEUE | Queue | saavo-template-analytics-events |
SAAS_RATE_LIMITER_DO | Durable Object | RateLimiterDO |
SAAS_COUNTER_DO | Durable Object | CounterDO |
SAAS_NONCE_DO | Durable Object | NonceDO |
SAAS_TOKEN_BUCKET_DO | Durable Object | TokenBucketDO |
SAAS_TIMER_DO | Durable Object | TimerDO |
资源名称必须成组修改
修改 R2 或 Queue 名称时,必须同步修改资源配置、生产者、消费者和对应普通变量。只改其中一处会导致 npm run doctor 检查失败,Queue 消息也可能无法被正确识别。
修改 wrangler.jsonc 后,应执行 npm run cf-typegen 重新生成 worker-configuration.d.ts。该文件是生成文件,不要直接编辑。