3.1 KiB
3.1 KiB
Cloudflare Workers Deployment Guide
本文档介绍如何将 PRMBR 项目部署到 Cloudflare Workers。
前置要求
- Cloudflare 账户
- Wrangler CLI 工具
- Prisma Accelerate (用于数据库连接)
配置步骤
1. 安装依赖
npm install
2. 设置 Prisma Accelerate
由于 Cloudflare Workers 不支持直接的 PostgreSQL 连接,需要使用 Prisma Accelerate:
- 访问 Prisma Console
- 创建新项目或选择现有项目
- 启用 Accelerate 功能
- 获取 Accelerate 连接字符串:
prisma://accelerate.prisma-data.net/?api_key=your_api_key
3. 设置环境变量
在 Cloudflare Dashboard 中设置以下环境变量:
# 使用 wrangler 命令设置
wrangler secret put NEXT_PUBLIC_SUPABASE_URL
wrangler secret put NEXT_PUBLIC_SUPABASE_ANON_KEY
wrangler secret put DATABASE_URL
或在 Cloudflare Dashboard 中: Workers & Pages > Your Worker > Settings > Environment Variables
4. 构建和部署
# 构建用于 Workers 的版本
npm run build:workers
# 部署到 Cloudflare Workers
npm run workers:deploy
5. 本地开发 (Workers)
# 启动本地 Workers 开发服务器
npm run workers:dev
主要更改
Next.js 配置 (next.config.ts)
- 启用
output: 'export'
用于静态导出 - 禁用图像优化 (
unoptimized: true
) - 添加 webpack 配置以排除 Node.js 特定模块
数据库适配
- 创建
src/lib/prisma-edge.ts
使用 Prisma Accelerate - 在需要数据库连接的 API 路由中使用 Edge Runtime
文件结构
├── _worker.js # Cloudflare Workers 入口点
├── wrangler.toml # Wrangler 配置
├── src/lib/prisma-edge.ts # Edge 运行时的 Prisma 客户端
└── out/ # 构建输出目录
限制和注意事项
- Runtime 限制: Cloudflare Workers 使用 V8 JavaScript 引擎,不支持完整的 Node.js API
- 冷启动: 第一次请求可能较慢
- 内存限制: Workers 有内存和 CPU 时间限制
- 数据库连接: 必须使用 Prisma Accelerate 或其他兼容的数据库代理
- 文件系统: 无法访问文件系统,所有资源必须内联或通过网络获取
故障排除
构建错误
如果遇到构建错误,检查:
- 所有依赖是否兼容 Edge Runtime
- 是否使用了 Node.js 特定 API
- 环境变量是否正确设置
运行时错误
- 检查 Cloudflare Workers 日志
- 确认数据库连接字符串正确
- 验证所有环境变量都已设置
性能优化
- 使用 Prisma Accelerate 的缓存功能
- 优化数据库查询
- 减少冷启动时间通过预热请求
部署检查清单
- Prisma Accelerate 已配置
- 环境变量已设置
- 构建成功完成
- 本地 Workers 开发测试通过
- 生产环境部署测试
- 数据库连接正常
- 认证流程工作正常