在做个人项目的过程中,我发现很多教程要么停留在 Demo 级别,要么忽略了真实上线时会遇到的问题。本文将结合我自己的实践经验,记录一次 Next.js + Prisma + MySQL 的完整落地过程,希望能给刚开始做全栈项目的同学一些参考。
技术选型说明
在技术选型上,我主要考虑三个点:开发效率、可维护性、上线成本。
- Next.js:同时支持 SSR / SSG / API Routes,非常适合做一体化的 Web 应用
- Prisma:类型安全的 ORM,对 TypeScript 极度友好,迁移体验好
- MySQL:成熟稳定,云厂商支持完善,适合长期项目
- Node.js + PM2:用于生产环境进程管理
项目结构设计
我采用的是 Next.js 13+ 的 App Router 结构,大致如下:
app/
├─ api/ // 后端接口
├─ (auth)/ // 登录相关页面
├─ dashboard/ // 业务页面
prisma/
├─ schema.prisma
API 和页面放在同一个项目中,可以避免前后端分离带来的接口联调成本,对个人开发者非常友好。
Prisma 的实际体验
在使用 Prisma 的过程中,最直观的感受是 “心智负担非常低” 。
定义好 schema.prisma 之后:
npx prisma migrate dev
npx prisma generate
就可以直接在代码中获得完整的类型提示,几乎不需要再去翻数据库文档。
另外一个非常重要的点是:上线环境一定要用 prisma migrate deploy,而不是 migrate dev,这是我踩过的一个坑。
部署与上线注意事项
在部署到 Linux 服务器时,我遇到过以下几个问题:
.next构建目录体积过大- Prisma Client 与服务器 glibc 不兼容
- Node 进程异常退出但没有自动重启
对应的解决方案是:
- 使用
next build+next start - 明确指定 Prisma 的
binaryTargets - 使用 PM2 托管 Node 进程
这些问题在本地开发时几乎不会暴露,但在真实上线时非常关键。
总结
如果你是个人开发者,或者想快速验证一个产品想法,Next.js + Prisma 是一套非常值得尝试的技术组合。
它不仅能让你专注业务本身,还能在后期扩展时保持足够的灵活性。
后续我也会继续分享更多在真实项目中踩过的坑和解决方案,希望能和大家一起交流学习。