joyrank · 还没接上数据库
还差四步就能跑起来
代码没问题,只是 DATABASE_URL 还没设置。
- 1
开一个 Postgres
Neon 或 Supabase 都行,代码是直连标准 Postgres,不依赖任何厂商 SDK。关键是必须用连接池(pooler)那个串,不能用 Direct。- neon.tech → 复制 Pooled connection(域名带
-pooler) - supabase.com → Connect 面板选 Transaction pooler(端口
6543)。 Direct 是 IPv6-only,Vercel 连不上
- neon.tech → 复制 Pooled connection(域名带
- 2
建 .env.local
在项目根目录(和package.json同级):cp .env.example .env.local
至少填这两行,连接串二选一:# Neon DATABASE_URL="postgres://用户:密码@ep-xxx-pooler.区域.aws.neon.tech/neondb?sslmode=require" # 或 Supabase(注意端口 6543) DATABASE_URL="postgres://postgres.项目ref:密码@aws-0-区域.pooler.supabase.com:6543/postgres" NEXT_PUBLIC_SITE_URL="http://localhost:3000"
- 3
建表并灌种子
npm run db:migrate npm run db:seed
用 Supabase 的话,建表这一次临时换成 Session pooler(端口 5432)更稳 ——schema.sql里有CREATE FUNCTION和CREATE TRIGGER, 走 6543 的事务模式偶尔会有兼容问题。跑完再换回 6543。
灌种子这步别跳过 —— 空榜是所有竞价站的头号死因。先改scripts/seed-data.json,换成你真实的 20–30 条。 - 4
重启 dev
npm run dev
必须重启,Next.js 只在启动时读.env.local。
完整部署说明和冷启动 SOP 在项目根目录的 README.md。 自测跑 npm test(44 项纯逻辑测试,不需要数据库)。