Jacky's blog
首页
  • Android
  • Web
  • Server
  • Python
  • iOS
  • Java
  • Vue
  • 计算机基础
  • AI
  • 全部工具
  • CLI 工具
  • 编辑器
  • 开发工具
  • 构建工具
  • 版本控制
  • 调试工具
  • 网络工具
  • 个人成长
  • 博客
  • 分类
  • 标签
  • 归档
收藏
GitHub (opens new window)

Jack Yang

编程; 随笔
首页
  • Android
  • Web
  • Server
  • Python
  • iOS
  • Java
  • Vue
  • 计算机基础
  • AI
  • 全部工具
  • CLI 工具
  • 编辑器
  • 开发工具
  • 构建工具
  • 版本控制
  • 调试工具
  • 网络工具
  • 个人成长
  • 博客
  • 分类
  • 标签
  • 归档
收藏
GitHub (opens new window)
  • 服务器tutorial
  • Spring

  • 数据库

  • 运维

    • SSH 进行本地文件的交互
    • 查询本地电脑外网 IP
    • DNS 查询
    • Cloudflare 概览
    • Wrangler 使用指引
      • 1. 进入项目并确认身份
      • 2. 最小配置与本地调试
      • 3. 变量、Secret 与多环境
      • 4. 部署、查看日志与回退
      • 5. 已有 Pages 项目怎么操作
      • 6. 出问题时按这个顺序查
    • 内网穿透
    • macOS 定时任务实现:Git 仓库状态自动同步方案
  • 运营

  • DevOps

  • CMS

  • 其他

  • server
  • operations
Jacky
2026-11-06
目录

Wrangler 使用指引

# Wrangler 使用指引

平台概览与文档入口见 Cloudflare 概览。

Wrangler 是 Cloudflare 的开发与部署 CLI,用来调试、发布 Workers,管理变量、Secret 和资源绑定,也提供 Pages 子命令。本文以直接使用 Wrangler 的 Worker 项目为主,按“本地跑通 → 明确环境 → 发布 → 查看日志”的顺序操作;核对日期:2026-11-05。

你要处理的项目 使用入口 配置重点
Worker API、定时任务、边缘逻辑 wrangler dev、wrangler deploy main、运行时兼容日期、资源绑定
已有 Pages 站点或 Pages Functions wrangler pages … 构建产物目录、Pages 项目名与分支
使用 Cloudflare Vite 插件的项目 优先使用项目的 npm run dev/build/deploy 遵循框架配置;环境选择可能使用 CLOUDFLARE_ENV

Workers 和 Pages 的部署对象不同,不能用 wrangler deploy 代替 wrangler pages deploy。Wrangler 的总入口保留在 官方文档 (opens new window)。

# 1. 进入项目并确认身份

已有项目先看 package.json、锁文件及 wrangler.jsonc / wrangler.toml,沿用项目已有版本和脚本;不要在博客仓库根目录随手安装来操作另一个 Worker。

操作 命令 如何确认
为尚未接入的项目添加 Wrangler npm install --save-dev wrangler 安装在目标项目,提交依赖与锁文件
确认当前实际版本 npx wrangler --version 使用项目中的版本,避免全局命令版本不同
查看当前子命令参数 npx wrangler deploy --help 选项以当前安装版本为准
浏览器 OAuth 登录 npx wrangler login 在浏览器确认账号并完成授权
确认身份和可用账号 npx wrangler whoami 核对账号后再操作资源
退出本机登录 npx wrangler logout 不会删除云端 Worker

Wrangler 应按项目安装,Node.js 使用官方支持的 Current / Active LTS / Maintenance LTS 版本;本机 Node 版本与 Worker 的运行时不是一回事。Worker 运行在 workerd 中。详见 安装与运行要求 (opens new window)。

新项目可以用官方脚手架生成,交互中先选择不部署,完成本地验证再发布:

npm create cloudflare@latest -- demo-api
cd demo-api
1
2

远程终端中 OAuth 回调不可达时,先查 npx wrangler login --help;支持设备授权的版本可使用 npx wrangler login --device。单独加 --browser=false 只是停止自动打开浏览器,不会消除本机回调要求。参见 登录命令与远程登录 (opens new window)。

# 2. 最小配置与本地调试

新项目优先使用 wrangler.jsonc。以下配置与代码是一组可对照的最小示例;已有项目应修改对应字段,不要覆盖其资源绑定。

wrangler.jsonc:

{
  "$schema": "./node_modules/wrangler/config-schema.json",
  "name": "demo-api",
  "main": "src/index.js",
  "compatibility_date": "2026-11-05",
  "vars": {
    "APP_ENV": "development"
  }
}
1
2
3
4
5
6
7
8
9

src/index.js:

export default {
  async fetch(request, env) {
    return new Response(`Hello from ${env.APP_ENV}`, {
      headers: { "content-type": "text/plain; charset=utf-8" }
    });
  }
};
1
2
3
4
5
6
7
字段 作用 容易混淆的地方
name Worker 名称 决定操作的服务,不是显示备注
main Worker 入口文件 路径需与实际代码一致
compatibility_date 选择运行时兼容行为 不是发布时间;老项目升级日期前需回归
vars 非敏感运行变量 在代码中通过 env.APP_ENV 读取,不放密码
资源绑定 把 KV、D1、R2 等接入 env 绑定声明不能替代资源创建;各环境需明确配置

配置格式与字段依据 Wrangler 配置文档 (opens new window)。JSONC 支持注释;不要同时维护两份意图相同的 JSONC/TOML 配置。

# 在项目目录执行;强制本地模式,禁用远程资源绑定。
npx wrangler dev --local --port 8787

# 另一个终端验证响应。
curl http://localhost:8787/
1
2
3
4
5

预期响应是 Hello from development。修改代码后观察本地终端中的编译结果和请求日志。按 Ctrl+C 停止服务。

场景 命令 影响范围
本地开发 npx wrangler dev --local 本机运行;本地资源数据不等于线上数据
在 Cloudflare 预览环境执行 npx wrangler dev --remote 连接远程资源,写操作可能影响真实数据
编译检查,不部署 npx wrangler deploy --dry-run --outdir .wrangler-build 生成本地产物,不能代替线上请求验证
明确指定配置文件 npx wrangler dev --config ./wrangler.jsonc 适用于多项目、多配置目录
在指定目录运行 npx wrangler --cwd ./worker dev --local 避免从错误目录读取配置

dev --remote 不是已经上线服务的日志查看入口;线上请求看 tail。本地运行与远程绑定的边界见 Worker 命令参考 (opens new window)。

# 3. 变量、Secret 与多环境

先分清三种值:

类型 放在哪里 谁读取
非敏感业务变量 Wrangler 配置的 vars Worker 的 env
本地调试 Secret 配置同目录的 .dev.vars,或按规则使用 .env 本地 Worker 的 env
线上业务 Secret 通过 Secret 命令或控制台设置 对应线上 Worker 的 env
Cloudflare 部署凭据 CI 的 Secret 存储,以环境变量注入 Wrangler 本身,不是业务 Secret

本地 .dev.vars 示例只声明名称,实际值在本机填写:

EXTERNAL_API_TOKEN=""
1

在目标 Worker 项目的 .gitignore 中加入:

.dev.vars*
.env*
.wrangler/
.wrangler-build/
1
2
3
4

.dev.vars 与 .env 选择一种即可;存在 .dev.vars 时,.env 不再作为本地 Worker 变量来源。选用 .dev.vars.staging 时,该环境文件独立生效,不会再与通用 .dev.vars 合并。文件加载规则见 本地环境变量与 Secret (opens new window)。

多环境不是自动隔离开关。把以下 env 片段合入前面的配置后,每次显式选择目标环境:

{
  "env": {
    "staging": {
      "name": "demo-api-staging",
      "vars": { "APP_ENV": "staging" }
    },
    "production": {
      "name": "demo-api-production",
      "vars": { "APP_ENV": "production" }
    }
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
操作 命令
本地以 staging 配置启动 npx wrangler dev --local --env staging
为 staging 设置 Secret,交互输入值 npx wrangler secret put EXTERNAL_API_TOKEN --env staging
列出 staging Secret 名称 npx wrangler secret list --env staging
删除 staging Secret npx wrangler secret delete EXTERNAL_API_TOKEN --env staging

vars、资源绑定及 Secret 不会简单从顶层继承到命名环境,需按环境配置。KV/D1/R2 若在两个环境填了同一资源 ID,仍然访问同一份数据。无 --env 时使用顶层配置,不会自动选择 production。参见 环境配置 (opens new window)。

secret list 不返回 Secret 明文;secret put 会立即创建并部署新版本。若需要先生成版本、再单独审批发布,应采用 versions secret put / versions deploy 的版本流程,不能把普通 secret put 当作纯暂存操作。详见 Secret 管理 (opens new window)。

CI 使用 CLOUDFLARE_API_TOKEN,需要时同时提供 CLOUDFLARE_ACCOUNT_ID;按目标账号和资源分配所需权限,通过 CI Secret 注入,不把 Token 写进仓库或命令示例。它们与 Worker 业务代码里的 env.EXTERNAL_API_TOKEN 作用不同。参见 Wrangler 系统环境变量 (opens new window)。

# 4. 部署、查看日志与回退

建议按顺序执行:确认身份 → 核对环境配置 → 本地验证 → dry-run → 部署 → 请求验证与日志观察。

npx wrangler whoami
npx wrangler deploy --dry-run --env staging --outdir .wrangler-build

# 从这里开始修改 Cloudflare 上的服务。
npx wrangler deploy --env staging
npx wrangler tail --env staging --format pretty
1
2
3
4
5
6

部署完成后使用输出中的 URL 发起请求,再观察对应环境的日志。自定义域名和路由是独立配置项,部署成功不代表任意域名已自动绑定。

目的 命令 说明
发布 staging npx wrangler deploy --env staging 上传代码并部署
发布 production npx wrangler deploy --env production 先确认确实要修改正式环境
查看线上请求日志 npx wrangler tail --env production 接入后发起请求,观察日志和异常
只看失败调用 npx wrangler tail --env production --status error 按调用状态过滤
查看近期代码版本 npx wrangler versions list --env production 代码版本不等于已发布记录
查看近期部署记录 npx wrangler deployments list --env production 查看部署状态与记录
上传版本,暂不发布 npx wrangler versions upload --env production 与直接 deploy 区分
发布已上传版本 npx wrangler versions deploy --env production 交互选择版本与流量比例
回退到明确版本 npx wrangler rollback VERSION_ID --env production 用 versions list 中的实际 ID 替换占位符

实时 tail 是观察当前请求的入口,不是完整历史日志数据库,高流量下还可能采样;持续审计需另外配置日志留存。版本、部署及命令参数见 Worker 命令参考 (opens new window)。

回退会立即影响线上服务,不会把本地源码、数据库内容或外部资源一起恢复;绑定资源被删除、Durable Object 生命周期变化等情况还会限制回退。不要把代码回退当作数据恢复。参见 回退限制 (opens new window)。

# 5. 已有 Pages 项目怎么操作

以下用于已有 Pages 或明确选用 Direct Upload 的项目,dist 要替换成实际构建输出目录:

操作 命令
查看 Pages 项目 npx wrangler pages project list
构建前端产物 npm run build
本地预览构建结果及 Functions npx wrangler pages dev ./dist
上传到指定项目的 main 分支 npx wrangler pages deploy ./dist --project-name demo-site --branch main
上传 preview 分支 npx wrangler pages deploy ./dist --project-name demo-site --branch preview

main 只有被配置为该 Pages 项目的生产分支时才是生产部署,preview 应选不同于生产分支的名称。Wrangler 上传的是已有构建产物,不会替你完成站点构建。参见 Pages Direct Upload (opens new window)。

Pages 配置可通过 pages_build_output_dir 声明构建目录;不要把 Workers 的 env.staging 环境模型直接套到 Pages。已有项目运行 wrangler pages download config 会覆盖本地 Wrangler 配置,应先比较、备份。参见 Pages 配置规则 (opens new window)。

本博客当前仍按仓库自己的 GitHub Pages 流程发布;上面的 Pages 命令是另一个部署方案的操作参考,不表示博客已切换到 Cloudflare,也不要把示例 dist 直接当作本仓库的产物目录。

# 6. 出问题时按这个顺序查

现象 先检查 下一步
命令不存在,或参数与文档不同 当前目录、npx wrangler --version 沿用锁文件版本,查对应子命令 --help
OAuth 登录卡住、浏览器回调失败 本地/SSH/容器的回调是否可达 支持的版本使用 login --device;CI 用 API Token
认证失败、账号不对 whoami、CI 注入的 Token 与账号 检查 Token 权限和账号范围,不反复覆盖项目配置
本地变量缺失 文件是否与配置同目录,是否选择了 --env 核对 .dev.vars / 环境专属文件及 vars 是否重声明
本地正常,线上变量或绑定缺失 部署环境、Secret 和资源绑定 对同一环境检查 Secret 名称及绑定资源
部署成功却返回 404 请求的是哪个 URL、路径和路由 先用部署输出 URL 验证,再查自定义域名和应用路由
tail 没有输出 是否选对 Worker/环境,是否有新请求 保持 tail 打开并触发请求,检查过滤与采样
Pages 发布的是旧页面 构建目录、项目名、生产分支 重新构建并确认上传的目录,不只看 deploy 是否成功

需要更细的 CLI 诊断时,可单次执行 WRANGLER_LOG=debug npx wrangler deploy --dry-run --env staging;排障后恢复默认级别,对外分享日志前清理凭据、请求内容和个人路径。Secret 值、账号凭据及真实项目配置不应出现在公开博客示例中。

#devops#cli#guide
上次更新: 2026/11/06, 17:43:58
Cloudflare 概览
内网穿透

← Cloudflare 概览 内网穿透→

最近更新
01
ADB 图形化与手机端调试工具选型
10-29
02
Shell 执行模型与环境加载
10-26
03
Shell 错误处理、调试与资源清理
10-26
更多文章>
Theme by Vdoing | Copyright © 2019-2026 Jacky | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式