Next 13.4中Prisma返回null但Node.ts正常的问题排查
Next 13.4 中 Prisma Client 在组件/API路由失效但Node脚本正常的问题
问题概述
在Next 13.4的API路由或组件中,Prisma Client无法正常工作,但在Node.ts文件中运行相同查询函数却完全正常(两者使用同一PrismaClient实例和数据库)。
具体现象
- 在Next组件中通过Prisma查询数据库时返回null,但运行prisma seed文件时一切正常。
- 使用
findUnique、findUniqueOrThrow方法均返回null;findFirst、findMany方法在不添加where条件时可正常工作,添加条件后则报错。
代码示例
Seed文件(/prisma/seed.ts)
async function getBySlug() { const ai = await prisma.aI.findUnique({ where: { slug: "Dua-Lipa" } }); return ai; } getBySlug() .then(console.log) .catch(console.error) .finally(() => prisma.$disconnect());
NextJS组件(/src/ai/[slug]/page.tsx)
import { prisma } from "@/lib/prisma"; type Props = { params: { slug: string }; }; async function getAiBySlug(slug: string) { const ai = await prisma.aI.findUnique({ where: { slug: "Dua-Lipa" } }); console.log("ai ->", ai); return ai; } const AiSlug = async ({ params }: Props) => { const ai = await getAiBySlug(slug); return ( <div> AiSlug, request to visit: <pre>{params.slug}</pre> <pre>{JSON.stringify(ai)}</pre> </div> ); }; export default AiSlug;
环境与已验证信息
- 技术栈:MongoDB、Prisma、Prisma Client、Next 13.4、TypeScript
- 已验证内容:
- 字段拼写正确,且在seed文件中可正常运行
- slug字段在Schema中标记为
@unique - seed.ts和page.tsx使用同一PrismaClient实例
- Seed文件运行命令:
ts-node --compiler-options {"module":"CommonJS"} prisma/seed.ts
疑问
是否与TypeScript配置(需提供tsconfig文件?)、next.config文件(当前为空)或nextAuth有关?
内容的提问来源于stack exchange,提问作者Reza Attar
相关产品推荐
相关产品推荐

