把 Nuxt 站点部署到 Cloudflare Workers
从 build 到绑定 huozhe.me 自定义域名的完整步骤。
Cloudflare Workers 上可以运行 Node.js 兼容的完整 Nuxt 服务端渲染应用,而且全球边缘节点访问都很快。由于 Nuxt Content v3 使用 SQLite 存储文章索引,部署到 Cloudflare 时需要配一个 D1 数据库。
项目里已经做了什么
项目已经把 Nitro 预设配置为 Cloudflare Worker,Wrangler 配置会在构建时自动生成,无需手写 wrangler.jsonc:
// nuxt.config.ts
nitro: {
preset: 'cloudflare_module',
cloudflare: {
deployConfig: true,
wrangler: {
name: 'huozhe-me',
d1_databases: [
{
binding: 'DB',
database_name: 'huozhe-me-content',
database_id: '替换为真实 ID',
},
],
},
},
}
创建 D1 数据库
npx wrangler d1 create huozhe-me-content
把输出的 database_id 填回 nuxt.config.ts,然后执行:
npm run deploy
这条命令会先构建 Nuxt(生成 .output/server/index.mjs 与 SQL 内容 dump),再用 Wrangler 部署到 Cloudflare。
构建产物位于 .output/:server/index.mjs 是 Worker 入口,public/ 是静态资源,.output/server/wrangler.json 是自动生成的部署配置。
本地开发不受影响
开发模式走本地 SQLite(better-sqlite3),只有生产构建与部署才会切到 D1:
npm run dev
绑定自定义域名
部署成功后,在 Cloudflare Dashboard 中打开 Worker 页面:
- 进入 Worker 的 Settings → Domains & Routes
- 点击 Add,选择 Custom Domain
- 输入
huozhe.me,按提示验证并保存 - 再添加一条
www.huozhe.me指向同一个 Worker(可选)
前提是 huozhe.me 这个域名已经由 Cloudflare 托管(DNS 生效中)。