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。這是自動產生的檔案,請勿直接編輯。