Next.js App Router 中 cookies().set() 和 redirect() 不兼容
Prisma enum 在 TypeScript 中报错,确保:① 运行了 prisma generate ② import { Prisma } from '@prisma/client' 取枚举值 ③ 不要用字符串字面量而用 Prisma.EnumType 枚举 ④ schema 中 enum...
Prisma enum 在 TypeScript 中报错,确保:① 运行了 prisma generate ② import { Prisma } from '@prisma/client' 取枚举值 ③ 不要用字符串字面量而用 Prisma.EnumType 枚举 ④ schema 中 enum...
revalidateTag vs revalidatePath:revalidateTag 清除特定 tag 的缓存(fetch 时用 next.tags 标记),revalidatePath 清除特定路径的缓存。数据变更后 revalidatePath 更直接,精细控制用 revalidateTa...
Next.js 路由组 layout 中调用 auth() 报错,因为 layout 是所有子页面的公共外壳,async layout 会拖慢导航。解决:layout 保持同步,用客户端组件 + useSession() 读取 session 缓存。 Vercel 构建时 TypeScript 检...
toast 和 router.push 冲突,因为 toast 的状态更新会中断 router.push 的 startTransition。解决:用 window.location.href 硬导航,或先 toast 再 setTimeout(() => router.push, 0)。 Pri...
revalidateTag vs revalidatePath:revalidateTag 清除特定 tag 的缓存(fetch 时用 next.tags 标记),revalidatePath 清除特定路径的缓存。数据变更后 revalidatePath 更直接,精细控制用 revalidateTa...
Shadcn UI 组件在 Server Component 报错,因为部分组件用了 Radix UI(Client Component)。确保使用 Shadcn 组件的页面或父组件加了 'use client',或者把组件包裹在 Client Component wrapper 中。 Next....
Next.js middleware 中 pathname 精确匹配失效,因为 intl 中间件处理后 pathname 含 locale 前缀(如 /zh/dashboard)。用 pathname.includes() 或 getLocaleFromPathname() 而非 pathname...
next-intl t() 模板字符串拼接报错,因为动态拼接翻译键不被支持。用显式 Record 映射替代 t(`${type}Opt`),改为 const labels: Record<string, string> = { ... } 然后 labels[type]。 Vercel 部署后 C...
Prisma Json 字段查询,用 prismaToJson 过滤或 $queryRaw 用 PostgreSQL 的 ->> 操作符。Prisma 6 支持直接在 where 中用 path 过滤 Json 字段。 Prisma 软删除查询过滤重复,用 middleware 自动过滤 dele...
Next.js 动态 import 水合报错,可能是动态组件的 SSR 输出与客户端不一致。加 ssr: false 避免服务端渲染,或确保组件在 SSR 和 CSR 中输出一致。 next-intl t() 模板字符串拼接报错,因为动态拼接翻译键不被支持。用显式 Record 映射替代 t(`$...
Next.js middleware 中 pathname 精确匹配失效,因为 intl 中间件处理后 pathname 含 locale 前缀(如 /zh/dashboard)。用 pathname.includes() 或 getLocaleFromPathname() 而非 pathname...
Prisma $transaction 超时回滚,默认超时 5s。长事务用 $transaction(async (tx) => { ... }, { timeout: 30000 }) 设置超时。Serverless 环境注意函数超时限制。 revalidateTag vs revalidate...
Prisma @@map 是表名映射(模型 → 数据库表名),字段 @map 是列名映射。混淆会导致查询的表/列名不匹配。规则:模型 PascalCase + @@map('snake_case'),字段 camelCase(DB 用 snake_case 时加 @map)。 Next.js IS...
Google OAuth 回调报 OAuthCallback 错误,检查:① GOOGLE_CLIENT_ID/SECRET 是否正确 ② NEXTAUTH_URL 是否与 Google Console 中的回调 URL 一致 ③ redirect URI 是否匹配 ④ 时钟同步问题。 Prism...
next-intl 翻译键缺失不报错是默认行为。要启用严格模式:在 next-intl 配置中设置 onError 回调,或用 getTranslations 时检查返回值。开发环境建议开启严格模式及早发现缺失键。 Next.js 路由组 layout 中调用 auth() 报错,因为 layou...
Tailwind v4 升级后样式失效,大版本升级有 breaking changes。检查:① tailwind.config.ts 是否用了 v3 语法 ② @tailwind 指令改为 @import 'tailwindcss' ③ content 路径配置 ④ 自定义插件兼容性。建议看官方迁...
Prisma $transaction 超时回滚,默认超时 5s。长事务用 $transaction(async (tx) => { ... }, { timeout: 30000 }) 设置超时。Serverless 环境注意函数超时限制。 next-intl 翻译键缺失不报错是默认行为。要启用...
Shadcn UI 组件在 Server Component 报错,因为部分组件用了 Radix UI(Client Component)。确保使用 Shadcn 组件的页面或父组件加了 'use client',或者把组件包裹在 Client Component wrapper 中。 Googl...
Vercel 部署后 CSS 丢失,常见原因:① Tailwind content 路径没包含组件目录 ② CSS 被 PurgeCSS 误删 ③ 生产构建时 PostCSS 配置问题 ④ 部分样式只在 Client Component 中生效但被服务端渲染时缺失。 Vercel Edge Run...
Prisma 乐观锁并发更新冲突,用 $executeRaw 原子更新:UPDATE table SET count = count + 1 WHERE id = $1 AND count < $limit。配合 FOR UPDATE 行锁防并发竞争。 Vercel 部署后 CSS 丢失,常见原因...