BPB Panel 兼容性日期
/ 5 min read
反直觉但有效:解决这个问题不是把兼容性日期调新,而是把它调旧。Cloudflare 运行时的某次更新引入了 breaking change,最新日期的运行时反而让 BPB Panel 跑不起来,固定到 2026-01-20 这个已知可用的版本才能恢复正常。
问题现象
GitHub issue #1255 中,用户在 Cloudflare Pages 上部署 4.1.3 后出现以下症状,且同账号下旧版本 3.0.1 完全正常:
💦 VLESS - Domain : 443 failed to get the second response from http://cp.cloudflare.com💦 VLESS - IPv4 : 443 failed to get the second response from http://cp.cloudflare.com💦 Best Ping 🚀 failed to get the second response from http://cp.cloudflare.com换 PROXY_IP、切 NAT64、开分片、调 ECH、优选 IP——全部无效。原因很简单:这些操作都在客户端侧折腾,但问题出在 Cloudflare 的服务端运行时里。
真正的原因
Cloudflare 的 compatibility_date 是一个”运行时版本锁”。Pages 项目创建时默认使用当时最新的日期,此后不会自动变动。
问题在于:Cloudflare 在 2026-01-20 之后的某次运行时迭代中,改动了某个 API 行为,与 BPB Panel 4.1.x 的实现产生了冲突。用最新日期部署的项目踩中了这个 breaking change;而锁定在 2026-01-20 的运行时快照,这个冲突还不存在,所以一切正常。
| 兼容性日期 | 状态 | |
|---|---|---|
| ❌ 有问题 | 2026-04-xx(最新) | 包含破坏性变更,代理逻辑静默失败,节点全部返回 -1 |
| ✅ 可用 | 2026-01-20(回退) | 运行时行为与 BPB Panel 兼容,节点连接恢复正常 |
这不是 BPB Panel 的 bug。 这是 Cloudflare 平台侧的运行时变更导致的兼容性问题。BPB Panel 代码本身没有问题,只是需要一个行为稳定的运行时版本。旧版本 3.0.1 不受影响,因为它依赖的 API 子集在新旧运行时下行为一致。
解决步骤
第一步:打开 Cloudflare Dashboard
进入 Workers & Pages,选择你的 BPB Panel 所在的 Pages 项目。
第二步:找到兼容性日期设置
Settings → Functions → Compatibility date,这里显示的通常是项目创建时的日期。
第三步:将日期改为 2026-01-20(往回调)
注意是往旧的方向改,不是改到今天的日期。保存后,这一步还没结束——配置修改不会自动触发重新部署。
第四步:触发重新部署,让配置真正生效
Cloudflare Dashboard 的 Pages 项目没有单独的”重新部署”按钮,需要通过实际上传文件才能触发。根据你的部署方式选择:
方式 A(推荐):使用 BPB Panel 官方 exe 工具 打开 BPB Panel 的 exe 程序,使用其中的 Update 功能重新上传一次。这会向 Cloudflare 推送新的文件,同时携带你刚才在 Dashboard 修改的兼容性日期配置,部署完成后即生效。
方式 B:手动上传文件 在 Pages 项目的 Deployments 页面,点击 Upload assets(或 Create new deployment),重新上传 BPB Panel 的
worker.js文件。有文件上传动作,新的兼容性日期才会被应用到运行环境。
为什么必须重新部署? Cloudflare Pages 的
compatibility_date是在编译/打包阶段写入的,不是运行时读取的配置项。单纯在 Dashboard 保存新日期,已有的部署快照不会变化,必须有新的部署动作才能让修改生效。
更大的教训:兼容性日期是双刃剑
通常我们以为”版本越新越好”,但 Cloudflare 的运行时版本系统更像是一个稳定性选择器。compatibility_date 的设计初衷就是让开发者可以主动选择自己信任的运行时行为,而不是被迫跟随最新变更。
当平台侧有 breaking change 时,锁定到一个已知可用的日期,是最实用的防御手段——没有代码改动,没有补丁,只是钉住一个稳定的运行时快照。