wrangler deploy 为什么部署出来和我想的不一样?

配置里有多个环境时,直接 wrangler deploy 部署的是顶层环境,不是你以为的那个。我在本地跑 --dry-run,它会打印警告。

部署结果和预期不一致,通常是这四个原因之一:忘了传 --env、绑定没在环境里重新声明、dashboard 上的改动被配置覆盖、Cron 触发器只是注释掉而没有清空。

它们有一个共同点:你以为配置文件说了算,但实际生效的是另一个层面。下面逐个看。

为什么部署到了错误的环境?

配置里有多个环境时,不带参数部署的是顶层环境。本地 --dry-run 实测会打印警告。CI 里一律显式传环境:

npx wrangler deploy --env production

为什么环境里的绑定运行时才报错?

环境不继承绑定,漏写的绑定在运行时才报错,而不是部署时。细节见 wrangler 与绑定。

为什么我在 dashboard 改的变量和路由又没了?

wrangler deploy 默认用配置覆盖 dashboard 上改过的变量与路由。需要保留变量用 --keep-vars。官方文档的思路是把配置文件当唯一事实来源,这样最省事。

为什么注释掉 Cron 触发器还在跑?

注释掉不等于关闭。官方配置页说,要写 crons = [] 才会清空。

出了问题想退回去,见 Cloudflare Workers 部署出问题了,怎么回滚?。

多环境未指定 --env 时的警告,我在本地用 wrangler deploy --dry-run 看到过。环境不继承绑定、--keep-vars 的覆盖行为和 crons = [] 来自 2026 年 10 月的官方文档,我没有在线上验证。行为会变化,以官方文档为准。