mcpField
W
workers-dev-experience

workers-dev-experience

github.com/secondsky开发24078 次安装5 周前更新
代码仓库

关于 workers-dev-experience

面向 Cloudflare Workers 开发者的本地开发指南,涵盖 Wrangler、Miniflare 和现代工具链。提供配置模板、调试方式及常见错误的预防建议。

主要功能

  1. 01Wrangler 本地开发流程
  2. 02wrangler.jsonc 配置指导
  3. 03TypeScript 设置建议
  4. 04常见错误排查
  5. 05调试与日志工具

适用场景

  1. 01初始化 Workers 项目
  2. 02配置本地预览环境
  3. 03排查绑定或模块错误
  4. 04查看部署后实时日志

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/secondsky/claude-skills --skill workers-dev-experience

安装后在 Claude Code 中输入/workers-dev-experience确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
debugging-tools.md
local-development.md
wrangler-config.md
scripts/
dev-setup.sh
templates/
dev-script.ts
wrangler-config.jsonc

详细介绍

Cloudflare Workers 开发者体验

使用 Wrangler、Miniflare 和现代工具进行本地开发设置。

快速入门

# Create new project
bunx create-cloudflare@latest my-worker

# Or from scratch
mkdir my-worker && cd my-worker
bun init -y
bun add -d wrangler @cloudflare/workers-types

# Start local development
bunx wrangler dev

必备 wrangler.jsonc

{
  "$schema": "node_modules/wrangler/config-schema.json",
  "name": "my-worker",
  "main": "src/index.ts",
  "compatibility_date": "2024-12-01",

  // Development settings
  "dev": {
    "port": 8787,
    "local_protocol": "http"
  },

  // Environment variables (non-secret)
  "vars": {
    "ENVIRONMENT": "development"
  },

  // Bindings
  "kv_namespaces": [
    { "binding": "KV", "id": "abc123", "preview_id": "def456" }
  ],

  "d1_databases": [
    { "binding": "DB", "database_id": "xyz789", "database_name": "my-db" }
  ],

  "r2_buckets": [
    { "binding": "BUCKET", "bucket_name": "my-bucket" }
  ]
}

关键规则

  1. 始终使用 wrangler dev 进行本地测试 - 准确模拟 Cloudflare 运行时
  2. 设置 compatibility_date - 控制运行时行为,每季度更新
  3. 本地开发使用预览 ID - 与生产绑定分开
  4. 正确配置 TypeScript - 使用 @cloudflare/workers-types
  5. 启用源映射 - 改善开发环境中的错误堆栈

可避免的 6 大错误

错误症状预防方法
找不到模块部署时出现导入错误在 tsconfig 中设置 "moduleResolution": "bundler"
绑定未定义本地环境中 env.KV is undefined在 KV 命名空间配置中添加 preview_id
HMR 不起作用更改未反映出来检查端口冲突,使用 --local 标志
D1 架构不匹配本地查询失败在本地数据库上运行迁移
类型错误缺少绑定类型使用 wrangler types 生成类型
CORS 问题浏览器阻止请求在开发处理程序中添加 CORS 标头

本地开发工作流

# Start dev server (recommended)
bunx wrangler dev

# With live reload
bunx wrangler dev --live-reload

# Remote mode (use actual Cloudflare services)
bunx wrangler dev --remote

# Specify environment
bunx wrangler dev --env staging

# Custom port
bunx wrangler dev --port 3000

TypeScript 配置

tsconfig.json:

{
  "compilerOptions": {
    "target": "ES2022",
    "module": "ES2022",
    "moduleResolution": "bundler",
    "lib": ["ES2022"],
    "types": ["@cloudflare/workers-types"],
    "strict": true,
    "noEmit": true,
    "skipLibCheck": true,
    "allowSyntheticDefaultImports": true,
    "forceConsistentCasingInFileNames": true
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules"]
}

Package.json 脚本

{
  "scripts": {
    "dev": "wrangler dev",
    "deploy": "wrangler deploy",
    "deploy:staging": "wrangler deploy --env staging",
    "deploy:production": "wrangler deploy --env production",
    "test": "vitest",
    "test:watch": "vitest --watch",
    "type-check": "tsc --noEmit",
    "lint": "eslint src/",
    "types": "wrangler types",
    "tail": "wrangler tail",
    "db:migrate": "wrangler d1 migrations apply DB",
    "db:studio": "wrangler d1 execute DB --local --command 'SELECT 1'"
  }
}

调试

控制台日志记录
// Development-only logging
export default {
  async fetch(request: Request, env: Env): Promise<Response> {
    if (env.ENVIRONMENT === 'development') {
      console.log('Request:', request.method, request.url);
      console.log('Headers:', Object.fromEntries(request.headers));
    }

    // Handler logic...
  }
};
使用 wrangler tail
# Real-time logs from deployed worker
wrangler tail

# Filter by status
wrangler tail --status error

# Filter by method
wrangler tail --method POST

# JSON format for parsing
wrangler tail --format json
VS Code 调试

.vscode/launch.json:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Wrangler Dev",
      "type": "node",
      "request": "launch",
      "runtimeExecutable": "bunx",
      "runtimeArgs": ["wrangler", "dev", "--inspector-port", "9229"],
      "skipFiles": ["<node_internals>/**"],
      "sourceMaps": true
    }
  ]
}

何时加载参考资料

根据任务加载特定参考资料:

  • 设置项目? → 加载 references/local-development.md,查看完整设置指南
  • 配置 wrangler? → 加载 references/wrangler-config.md,查看所有配置选项
  • 调试问题? → 加载 references/debugging-tools.md,查看调试技巧

模板

模板用途使用时机
templates/wrangler-config.jsonc完整的 wrangler 配置启动新项目
templates/dev-script.ts开发工具添加开发辅助功能

脚本

脚本用途命令
scripts/dev-setup.sh初始化开发环境./dev-setup.sh

资源

评论

支持 Markdown