Next.js 13集成Prisma插入数据时出现Cannot read properties of undefined错误
问题:Next.js 13 + Prisma 插入数据时出现
Cannot read properties of undefined (reading 'task') 错误 我在Next.js 13应用中配置Prisma,prisma push和prisma generate执行都正常,但调用数据插入函数时触发上述错误。尝试将模型名改为小写后问题依旧,求解决方法。
Prisma Schema 代码
generator client { provider = "prisma-client-js" } datasource db { provider = "postgresql" url = env("DATABASE_URL") } model Task { id Int @id @default(autoincrement()) job_id Int // 其他字段 }
Prisma Client 初始化代码(路径:@/lib/prisma.js)
import { PrismaClient } from "@prisma/client"; let prisma; if (typeof window === "undefined") { if (process.env.NODE_ENV === "production") { prisma = new PrismaClient() } else { if (!global.prisma) { global.prisma = new PrismaClient() } prisma = global.prisma } } export default prisma
数据插入函数代码
import prisma from "@/lib/prisma" export async function InsertData(data) { await prisma.task.create({ data: data }) const allTask = await prisma.task.findMany() return allTask }
解决步骤
确保Prisma Client正确生成
重新执行npx prisma generate,确认无报错且node_modules/@prisma/client目录存在。修复Prisma Client初始化逻辑
原代码在客户端环境中prisma会是undefined,如果插入函数在客户端组件调用就会出错。修改初始化代码:import { PrismaClient } from "@prisma/client"; const prisma = global.prisma || new PrismaClient(); if (process.env.NODE_ENV !== "production") global.prisma = prisma; export default prisma;同时必须确保
InsertData函数只在服务端组件、API路由或Server Actions中调用,禁止在客户端组件直接执行数据库操作。验证模型与Client一致性
Prisma Client会自动将模型名转为小写驼峰(Task→task),所以prisma.task.create的调用是正确的,无需修改模型名。检查数据库连接
运行npx prisma studio,确认能正常连接数据库并看到Task表,验证DATABASE_URL环境变量配置正确。
内容的提问来源于stack exchange,提问作者daruom mourad
相关产品推荐
相关产品推荐

