项目部署到 Cloudflare Workers
项目部署
项目是基于Shipany Tanstack模板作为底座开发的,根据Shipany Tanstack文档 支持部署到Cloudflare Workers
Cloudflare Worker 在 Workers 免费计划上的大小限制为 3 MB,在 Workers 付费计划上为 10 MB。构建 Worker 后,wrangler 将显示原始大小和压缩大小,只有后者(压缩大小)对 Worker 大小限制重要。
Total Upload: 9542.88 KiB / gzip: 1913.36 KiB
模板的大小大概为 1.86 MB,因此即使您是 Cloudflare 免费计划也可以部署
项目部署
设置部署文件
在项目根目录通过下面的命令创建wrangler.jsonc文件。
cp wrangler.example.jsonc wrangler.jsonc
然后修改 wrangler.jsonc 文件中的内容,根据你的项目在线上部署的情况,修改对应的变量值。(不需要新建.env.production)
// Cloudflare Workers deploy config — TEMPLATE.
// The /deploy-cloudflare skill copies this to wrangler.jsonc (gitignored, your
// working copy) and fills in the real values (D1 database_id, production URL).
// `pnpm cf:build` (NITRO_PRESET=cloudflare_module) merges wrangler.jsonc into
// the generated .output/server/wrangler.json; deploy with `pnpm cf:deploy`.
{
"$schema": "node_modules/wrangler/config-schema.json",
"name": "shipany-template-pixany", //这里改成你想要的名字,部署后在Cloudflare上就会有这个名字
"compatibility_flags": ["nodejs_compat"],
"observability": {
"enabled": true,
},
"vars": {
"DATABASE_PROVIDER": "d1",//配置数据库,建议用d1,个人使用比Supabase、neon要好,已在Supabase、neon付费另说
// Server-side runtime fallbacks for the build-time VITE_* values — keep in
// sync with .env.production (better-auth trustedOrigins, payment callbacks).
"VITE_APP_URL": "https://pixanyai.16781678.xyz", // 这里是你线上域名
"VITE_APP_NAME": "Pixany AI",// 这里是网站品牌名,读取优先级是优先取admin配置,无的话取该值
},
"d1_databases": [
{
"binding": "DB",
"database_name": "shipany-template-pixany",// D1数据库创建时录入的名称
"database_id": "289716d2-23fd-xxx-97b0-0753bfc91717", // D1数据库创建成功的id
"migrations_dir": "drizzle",
},
],
// ── Postgres via Hyperdrive (instead of D1) ────────────────────────────────
// 1. npx wrangler hyperdrive create <name> --connection-string="postgres://..." (your direct PG url)
// 2. Set vars.DATABASE_PROVIDER to "postgresql" and remove the d1_databases block
// 3. Uncomment and fill the binding (the build keeps the postgres driver in
// the bundle when DATABASE_PROVIDER=postgresql — see vite.config.ts):
// "hyperdrive": [
// { "binding": "HYPERDRIVE", "id": "REPLACE_WITH_OUTPUT_OF_WRANGLER_HYPERDRIVE_CREATE" }
// ]
//
// Other optional bindings — uncomment when needed:
// "kv_namespaces": [{ "binding": "CACHE", "id": "..." }],
// "r2_buckets": [{ "binding": "BUCKET", "bucket_name": "..." }],
"triggers": {
"crons": ["0 16 * * *"] // Daily 00:00 UTC+8 (16:00 UTC) storage migration // 这里不要删除,是配置的定时任务
}
}
通过命令行部署项目
在项目根目录下执行以下命令,安装项目依赖,已安装就忽略这一步
pnpm install
依赖安装完后,会自动安装 wrangler 命令行工具。
然后在项目根目录下执行以下命令,部署项目到 Cloudflare Workers。
// 注意:这个打包过程大概得持续2-3分钟
pnpm cf:deploy
如果是第一次部署项目到 Cloudflare Workers,命令行会输出 Cloudflare 的授权地址。你需要点击打开链接,在浏览器登录你的 Cloudflare 账户,完成对项目的授权。
授权完成后,部署命令会继续执行,编译项目代码,上传部署文件,最终把你的项目发布到 Cloudflare Workers,并输出预览地址。




至此,项目已经成功部署到 Cloudflare Workers。打开输出的预览地址,就可以看到项目页面了。
注意: 后续有改动,部署还是这个pnpm cf:deploy 命令
接下来,你可以通过 绑定自定义域名、配置 Hyperdrive 等操作,让项目正式上线运营。
绑定自定义域名
如果你没有域名, 请点击下面
第一种:在 Cloudflare 添加自定义域名
如果你的域名是在其他域名服务商(Godaddy、Namecheap 等)注册的,你可以选择在 Cloudflare 添加自定义域名。
这一种主要存在新域名第一次在Cloudflare上配置。

然后去你的域名管理后台,把域名的 NAMESERVER 设置为 Cloudflare 提供的 Nameservers
graham.ns.cloudflare.com
ullis.ns.cloudflare.com
域名托管到 Cloudflare 后,可以使用 Cloudflare 提供的 DNS 解析、SSL 证书、CDN 加速等功能。
第二种:在 Cloudflare Workers 添加自定义域名

进入部署在 Cloudflare Workers 的项目管理页面,进入 Settings -> Domains & Routers 页面,点击 Add 按钮,选择 Custom Domain,输入你的自定义域名(可以是托管在 Cloudflare 的根域名,或者子域名),点击 Add Domain 按钮,添加自定义域名。



访问项目
上一步添加自定义域名后,Cloudflare 会自动为域名添加到 Cloudflare Workers 的 DNS 解析记录。等 DNS 解析生效(一般半小时内生效,最多可能需要 48 小时),就可以通过自定义域名访问你的项目了。
配置 Hyperdrive
Hyperdrive 是一项由 Cloudflare 提供的,用于加速全球用户对现有数据库访问的服务。
通过以下步骤配置 Hyperdrive,加快 Cloudflare Workers 上部署的项目对外部数据库的访问速度。
配置 Hyperdrive
进入 Cloudflare 控制台,在 Storage & databases -> Hyperdrive 页面点击 Create configuration 按钮,创建 Hyperdrive 配置。

在创建 Hyperdrive 配置页面,选择 Connect to public database,然后填入数据库配置信息。

Configuration name :是给你自己看的配置名称,填什么无所谓。
Connection String :要填写项目线上环境的数据库连接地址。例如:


// 注意:[your password]换成你的密码,
// db.qcddhntipeafhilqnilm.supabase.co 换成你的(例如上图Supabase截图)
组装示例:postgres://postgres:[your password]@db.qcddhntipeafhilqnilm.supabase.co:5432/postgres
复制 Hyperdrive 配置 ID
在 Hyperdrive 配置管理页面,复制 Hyperdrive 配置 ID。

修改项目配置文件
修改项目根目录下的 wrangler.jsonc 文件,开启 [[hyperdrive]] 配置,填入 Hyperdrive 配置 ID 和线上环境的数据库连接地址。
[[hyperdrive]]
binding = "HYPERDRIVE" # 固定值,不要修改(注意:复制后删除 “我加的备注”)
id = "your-hyperdrive-config-id" # 填入上一步复制的 Hyperdrive 配置 ID(注意:复制后删除 “我加的备注”)
localConnectionString = "postgres://user:password@domain:port/database" # 填入数据库连接地址, localConnectionString 只在 dev 生效,线上不会用, 例如:postgres://postgres:[your password]@db.qcddhntipeafhilqnilm.supabase.co:5432/postgres(注意:复制后删除 “我加的备注”)
重新部署项目
在项目根目录下执行以下命令,重新部署项目。
pnpm cf:deploy
重新部署项目后,项目会自动使用 Hyperdrive 加速数据库访问。可以在 Hyperdrive 管理页面,看到数据查询请求的统计信息。

个人建议配置上,我之前有个站配置后 查询返回明显快了很多
如果你怎么配置怎么部署都不好使请看这里
下面是怎么部署都没有hyperdrive

尝试方法1:打开 wrangler.jsonc
第一行的这个name 必须和下图中名字保持一致(必须是 同一个)
name = "shipany-template"

然后重新pnpm cf:deploy成功后查看Bindings,如果还是没有,尝试方法2
尝试方法2:手动添加
值写死:HYPERDRIVE

点击后(漫长等待部署(按钮置灰 不是卡死)),Cloudflare 会自动将 Hyperdrive 绑定到你的应用,你的代码就可以通过 env.HYPERDRIVE.connectionString 来使用优化后的数据库连接了。

项目会自动使用 Hyperdrive 加速数据库访问。可以在 Hyperdrive 管理页面,看到数据查询请求的统计信息。
Cloudflare Workers 怎么购买套餐($5 1个月),才能解决打包部署大于3MB报错的问题
登录你的 Cloudflare 账户。
找到 Workers 的订阅/定价(Pricing / Plans)页面 — 通常在 Cloudflare 控制面板里。
选择适合的付费计划(Paid plan)来替换当前 Free plan —— 这样 Worker 的 bundle 大小限制就提升到了 10 MB。
如果 10 MB 仍不够,理论上可以提交「Limit Increase Request Form」请求更高的限制
那我刚买的,现在点击取消,是算一天的,还是算1个月的,如果是1个月,我现在取消,后面这几天还能用么
当你在控制面板里“取消订阅/降级到免费 plan”时,这个取消并 不会立刻生效。也就是说:
- 取消操作只是“设置为不在下一计费周期续费”,当前这个计费周期仍然有效 — 你将继续保有付费 plan 的功能,直到本期结束。([Cloudflare Docs][1])
- 他们不会按“天数”结算/退款,也不会因为你提前取消就立刻停止服务或返还剩余天数/费用。([Cloudflare Docs][2])
- 所以,如果你刚买不久(例如本月刚开始),现在取消的话 —— 你之后直到这个“当前计费周期结束日”(renewal date)之前,依然可以继续使用付费 plan 的全部功能。([Cloudflare Docs][1])
简而言之:取消不会按天结算,也不会失效得马上 — 你付的钱仍算一个完整月,你可以用完这一整月。
