179 lines
2.5 KiB
Markdown
179 lines
2.5 KiB
Markdown
# 迁移指南
|
|
|
|
> **文档版本**: v1.0.0
|
|
> **创建日期**: 2026-05-25
|
|
> **适用范围**: FischerX 项目开发人员
|
|
|
|
## 目录
|
|
|
|
- [v1.x → v2.x 迁移](#v1x--v2x-迁移)
|
|
- [破坏性变更说明](#破坏性变更说明)
|
|
- [迁移步骤](#迁移步骤)
|
|
- [常见问题](#常见问题)
|
|
|
|
---
|
|
|
|
## v1.x → v2.x 迁移
|
|
|
|
### 概述
|
|
|
|
v2.0 带来了以下重大改进:
|
|
- 升级到 Next.js 16
|
|
- 升级到 NestJS 11
|
|
- 升级到 Prisma 6
|
|
- 引入 Monorepo 架构
|
|
- 重构了认证系统
|
|
|
|
---
|
|
|
|
## 破坏性变更说明
|
|
|
|
### Next.js 变更
|
|
|
|
#### Pages Router → App Router
|
|
|
|
**v1.x**:
|
|
```tsx
|
|
// pages/index.tsx
|
|
export default function Home() {
|
|
return <div>Home</div>;
|
|
}
|
|
```
|
|
|
|
**v2.x**:
|
|
```tsx
|
|
// app/page.tsx
|
|
export default function HomePage() {
|
|
return <div>Home</div>;
|
|
}
|
|
```
|
|
|
|
#### 图片组件变更
|
|
|
|
**v1.x**:
|
|
```tsx
|
|
import Image from 'next/image';
|
|
|
|
<Image src="/logo.png" width={100} height={100} />
|
|
```
|
|
|
|
**v2.x**:
|
|
```tsx
|
|
import Image from 'next/image';
|
|
|
|
<Image src="/logo.png" width={100} height={100} alt="Logo" />
|
|
```
|
|
|
|
### Prisma 变更
|
|
|
|
#### 枚举值变更
|
|
|
|
**v1.x**:
|
|
```prisma
|
|
enum Role {
|
|
ADMIN
|
|
USER
|
|
}
|
|
```
|
|
|
|
**v2.x**:
|
|
```prisma
|
|
enum Role {
|
|
ADMIN
|
|
USER
|
|
GUEST @default(USER)
|
|
}
|
|
```
|
|
|
|
### API 变更
|
|
|
|
#### 认证端点
|
|
|
|
**v1.x**:
|
|
```
|
|
POST /auth/login
|
|
POST /auth/register
|
|
```
|
|
|
|
**v2.x**:
|
|
```
|
|
POST /api/v1/auth/login
|
|
POST /api/v1/auth/register
|
|
POST /api/v1/auth/refresh
|
|
```
|
|
|
|
---
|
|
|
|
## 迁移步骤
|
|
|
|
### 1. 备份数据
|
|
|
|
```bash
|
|
# 备份数据库
|
|
pg_dump fischerx > backup_v1.sql
|
|
```
|
|
|
|
### 2. 更新代码
|
|
|
|
```bash
|
|
# 拉取新版本
|
|
git fetch origin
|
|
git checkout v2.0.0
|
|
```
|
|
|
|
### 3. 更新依赖
|
|
|
|
```bash
|
|
# 安装新依赖
|
|
pnpm install
|
|
```
|
|
|
|
### 4. 数据库迁移
|
|
|
|
```bash
|
|
# 运行新迁移
|
|
cd services/api
|
|
pnpm prisma migrate deploy
|
|
```
|
|
|
|
### 5. 更新环境变量
|
|
|
|
```env
|
|
# 添加新的环境变量
|
|
NEXT_PUBLIC_API_URL=http://localhost:4000/api/v1
|
|
```
|
|
|
|
### 6. 测试
|
|
|
|
```bash
|
|
# 运行测试
|
|
pnpm test
|
|
```
|
|
|
|
---
|
|
|
|
## 常见问题
|
|
|
|
### Q: 我的自定义 Hooks 需要改吗?
|
|
|
|
A: 大部分不需要,除非它们依赖旧的 Next.js API。
|
|
|
|
### Q: 数据库迁移会丢失数据吗?
|
|
|
|
A: 我们的迁移是安全的,但建议先备份。
|
|
|
|
### Q: 旧的 API 端点还能用吗?
|
|
|
|
A: 我们提供了向后兼容层,但建议尽快迁移。
|
|
|
|
---
|
|
|
|
## 下一步
|
|
|
|
- [常见问题](./troubleshooting.md) - 查看更多问题
|
|
|
|
---
|
|
|
|
> **文档维护**: 本文档由开发团队维护,如有问题或建议请提交 Issue。
|
|
> **最后更新**: 2026-05-25
|