Vercel 部署后环境变量不生效的问题
useSession() 返回 null,检查:① SessionProvider 是否包裹了组件 ② session 是否过期 ③ 服务端 auth() 是否正常 ④ 跨域 cookie 问题 ⑤ middleware 是否拦截了 auth 回调。 Auth.js 5 beta 的 sessio...
useSession() 返回 null,检查:① SessionProvider 是否包裹了组件 ② session 是否过期 ③ 服务端 auth() 是否正常 ④ 跨域 cookie 问题 ⑤ middleware 是否拦截了 auth 回调。 Auth.js 5 beta 的 sessio...
next/image 图片模糊或变形,检查:① 是否设置了 width/height 或 fill ② fill 模式需要父容器 position: relative ③ priority 只给 LCP 图片 ④ sizes 属性帮助浏览器选择正确尺寸 ⑤ 避免在 Server Component...
Prisma Json 字段查询,用 prismaToJson 过滤或 $queryRaw 用 PostgreSQL 的 ->> 操作符。Prisma 6 支持直接在 where 中用 path 过滤 Json 字段。 Prisma enum 在 TypeScript 中报错,确保:① 运行了 p...
Auth.js 5 signIn redirect:false 返回 { error, ok, status, url }。判断成功:!result.error && result.ok。注意 result.url 可能含 ?error= 参数,用 redirectTo 显式指定避免误判。 Rea...
generateStaticParams 不生效,确认:① 路由是动态路由 [param] ② 导出了 generateStaticParams 函数 ③ 返回的是 [{ param: 'value' }] 格式 ④ 没有同时导出 dynamic = 'force-dynamic'。 遇到 hyd...
Server Action 提交后不跳转,可能是用了 router.push 而非 window.location.href。Next.js 15 + next-intl 的 router.push 在 startTransition 内会被 toast 的状态更新中断。解决:用 window.lo...
Auth.js 5 beta 的 session 丢失问题,常见原因:① AUTH_SECRET 未配置或变了 ② cookie 被中间件清除 ③ JWT 过期。排查:检查 AUTH_SECRET 是否一致,middleware 中是否有不必要的 Set-Cookie,callbacks.jwt 是...
Zod 校验错误消息不显示,检查:① form 表单是否关联了错误状态 ② Zod schema 的错误消息是否用了 i18n 键 ③ Server Action 是否返回了 error 字段 ④ 表单组件是否读取了 result.error 并显示。 Vercel 构建时 TypeScript...
Prisma $queryRaw 中 camelCase 列名必须加双引号:SELECT "newUserQuota" FROM users。不加双引号 PostgreSQL 会当作不区分大小写的标识符,找不到 camelCase 列。TS 类型声明也要与 SQL 别名一致。 Vercel 构建时...
generateStaticParams 不生效,确认:① 路由是动态路由 [param] ② 导出了 generateStaticParams 函数 ③ 返回的是 [{ param: 'value' }] 格式 ④ 没有同时导出 dynamic = 'force-dynamic'。 next-i...
Next.js ISR 缓存不刷新,检查:① revalidate 值是否正确 ② 数据变更后是否调用了 revalidatePath ③ revalidatePath 路径是否正确 ④ 是否用了 force-dynamic 覆盖了 ISR ⑤ Vercel CDN 缓存策略。 Vercel Ed...
next/image 图片模糊或变形,检查:① 是否设置了 width/height 或 fill ② fill 模式需要父容器 position: relative ③ priority 只给 LCP 图片 ④ sizes 属性帮助浏览器选择正确尺寸 ⑤ 避免在 Server Component...
Vercel Edge Runtime 不支持 Prisma,因为 Prisma 依赖 Node.js 原生模块。Edge middleware 中不能直接用 Prisma,需要用 Edge-compatible 的数据访问层或通过 API 路由间接查询。 Shadcn UI 组件在 Server...
Next.js 路由组 layout 中调用 auth() 报错,因为 layout 是所有子页面的公共外壳,async layout 会拖慢导航。解决:layout 保持同步,用客户端组件 + useSession() 读取 session 缓存。 Next.js 15 中 next/dynam...
Next.js 动态 import 水合报错,可能是动态组件的 SSR 输出与客户端不一致。加 ssr: false 避免服务端渲染,或确保组件在 SSR 和 CSR 中输出一致。 Prisma enum 在 TypeScript 中报错,确保:① 运行了 prisma generate ② im...
Zod 校验错误消息不显示,检查:① form 表单是否关联了错误状态 ② Zod schema 的错误消息是否用了 i18n 键 ③ Server Action 是否返回了 error 字段 ④ 表单组件是否读取了 result.error 并显示。 Auth.js credentials 登录...
Tailwind v4 升级后样式失效,大版本升级有 breaking changes。检查:① tailwind.config.ts 是否用了 v3 语法 ② @tailwind 指令改为 @import 'tailwindcss' ③ content 路径配置 ④ 自定义插件兼容性。建议看官方迁...
next-intl t() 模板字符串拼接报错,因为动态拼接翻译键不被支持。用显式 Record 映射替代 t(`${type}Opt`),改为 const labels: Record<string, string> = { ... } 然后 labels[type]。 next-intl 配置...
next-intl 配置后 404,一般是 middleware 匹配规则不对。检查 middleware.ts 中 matcher 配置,确保排除了 /api、/_next、/admin 等非国际化路径。另外检查 defaultLocale 和 locales 配置是否正确。 router.pu...
Vercel 构建时 TypeScript 检查失败,可以在 next.config.ts 中设置 typescript.ignoreBuildErrors = true 临时跳过,但不推荐。正确做法:本地运行 npm run typecheck 修复所有类型错误后再部署。 Next.js 15...