问答记录
PrismaClient 在 Client Component 中运行报错与 Server/Client 分离解决方案
创建于 2026/7/15更新于 2026/7/15
Prisma
Next.js
Server Components
Client Components
踩坑
## 问题描述 PrismaClient 无法在浏览器环境运行。当将页面组件改为 Client Component ("use client") 并直接使用 prisma 查询数据库时出现错误: ``` Error: PrismaClient is unable to run in this browser environment ``` ## 根本原因 PrismaClient 设计为仅在服务端执行,无法被打包到浏览器中运行。 ## 解决方案 采用 Server/Client Component 分离模式: 1. Server Component (page.tsx) 使用 Server Actions 获取数据 2. Client Component (Client.tsx) 负责状态管理和交互逻辑 3. 数据通过 props 从 Server 传递到 Client ## 关键代码示例 ```tsx // page.tsx - Server Component import { getProjectWithDetails } from "@/server/actions/project"; export default async function ProjectDetailPage({ params }) { const project = await getProjectWithDetails(params.id); return <ProjectDetailClient project={project} />; } // ProjectDetailClient.tsx - Client Component "use client"; export default function ProjectDetailClient({ project }) { const [tasks, setTasks] = useState(project.tasks); } ``` ## 注意事项 - 所有 Prisma 查询必须在 Server Actions 或 Server Component 中执行 - Client Component 只能通过 props 接收数据,不能直接访问数据库
关联知识资产
QA
资产 ID: 2ddbff3f-6b73-42ad-856a-5274d0ede035