Hướng dẫn theo framework
Theo dõi lỗi cho Cloudflare Workers
@belvador/cloudflare bọc một Worker để lỗi trong các handler được báo, còn response giữ nguyên như code của bạn trả về. Mỗi lần gọi có scope riêng, nên user, tag và ngữ cảnh không bao giờ lẫn giữa các request.
Trả lời nhanh#
Bọc Worker được export bằng
withBelvadortừ@belvador/cloudflare.Lỗi trong handler
fetch,scheduled,queue,emailvàtailđược báo; response không đổi.Việc gửi diễn ra trong
ctx.waitUntil, sau khi response đã trả.Cần cờ
nodejs_compat; class Durable Object chưa được bọc ở bản 0.x.
Cài đặt#
npm install @belvador/cloudflare@0.6.1Bọc Worker#
import { withBelvador } from "@belvador/cloudflare";type Env = { BELVADOR_DSN?: string; BELVADOR_RELEASE?: string };// Requires the nodejs_compat compatibility flag.// The DSN comes from env.BELVADOR_DSN when you leave it out here.export default withBelvador( (env: Env) => ({ dsn: env.BELVADOR_DSN ?? "https://<public-key>@ingest.belvador.dev/<project-id>", release: env.BELVADOR_RELEASE, }), { async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> { return new Response("ok"); }, },);Bật cờ tương thích nodejs_compat trong wrangler.jsonc; chính cờ này cho mỗi lần gọi một scope riêng (hướng dẫn Cloudflare).
Scheduled handler#
Handler scheduled của Worker là một cron job như mọi cron job khác. Báo nó bằng check-in để lần chạy không hề diễn ra sẽ mở sự cố:
import { withBelvador, withMonitor } from "@belvador/cloudflare";export default withBelvador((env: Env) => ({ release: env.BELVADOR_RELEASE }), { async scheduled(controller, env, ctx) { await withMonitor("nightly-invoices", async (run) => { // Your job. Nothing to do? run.skip("nothing_due") }, { schedule: { type: "crontab", value: "0 2 * * *" }, timezone: "UTC" }); },});Lịch, kết quả và cảnh báo có ở theo dõi cron.
Trace và log#
Workers xuất được trace và log OpenTelemetry sang Belvador; hướng dẫn có cả cách xuất có sẵn của Cloudflare lẫn cách dùng SDK (OpenTelemetry cho Workers).
Chưa kiểm: cách cài này theo tài liệu của nhà cung cấp; Belvador chưa chạy trọn đường gửi.
Giới hạn#
Cú pháp module (
export default { fetch … }) deploy bằng Wrangler. Cú pháp service worker không được hỗ trợ.withBelvadorbọc các handlerfetch,scheduled,queue,emailvàtailcủa object được export. Class Durable Object chưa được bọc ở bản 0.x; hãy gọicaptureExceptiontrong đó.App TanStack Start hoặc Lovable thì dùng gói TanStack Start, vốn đã gồm gói này.
Câu hỏi thường gặp#
Bọc Worker có đổi response hay làm chậm response không?#
Response được trả đúng như code của bạn tạo ra. Việc gửi xong sau khi đã trả response, trong ctx.waitUntil, nên không làm người dùng phải chờ.
Bài viết về chủ đề này
Tất cả bài viết- Theo dõi lỗi Cloudflare Workers: những lỗi vẫn trả về 200Một Worker thử nghiệm hỏng theo năm kiểu, mỗi kiểu ba lần: client, Tail của Cloudflare và wrapper theo dõi lỗi thấy gì, và cách bắt lỗi trong waitUntil.
- Giám sát AI agent chạy trên serverless functionAgent trên serverless là chuỗi function ngắn có giới hạn thời gian cứng. Cần theo dõi gì ở từng bước, kèm ba thí nghiệm và bảng giới hạn trong tài liệu.
Thử trên project Hetzner của bạn
Miễn phí trong giai đoạn beta. Hetzner tính tiền máy; Belvador không bao giờ tính tiền theo event.