skip to content

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 时,锁定到一个已知可用的日期,是最实用的防御手段——没有代码改动,没有补丁,只是钉住一个稳定的运行时快照。