Next.js中使用Prisma插入数据时出现Cannot read properties of undefined错误
解决 "TypeError: Cannot read properties of undefined (reading 'actualite')" 错误
核心问题:Prisma Client 实例未正确初始化
你当前的导入方式错误,@prisma/client 导出的是 PrismaClient 类,而非直接可用的 prisma 实例。此外代码中还存在字段不匹配的问题,以下是完整修复方案:
1. 修正 Prisma Client 导入与实例化
修改 api/actualites.js 代码,正确创建 PrismaClient 实例,并匹配 schema 中的字段:
// api/actualites.js import { PrismaClient } from '@prisma/client'; // 初始化 Prisma Client 实例 const prisma = new PrismaClient(); export default async function handler(req, res) { if (req.method === 'POST') { // 匹配 schema 中的字段:titre、contenu、image const { titre, contenu, image } = req.body; try { const createdActualite = await prisma.actualite.create({ data: { titre, contenu, image, // schema 中 image 为必填字段,必须传入 }, }); res.status(200).json(createdActualite); } catch (error) { console.error(error); res.status(500).json({ error: '发布新闻时发生错误。' }); } finally { // 操作完成后关闭数据库连接 await prisma.$disconnect(); } } else { res.status(405).json({ error: '不允许的请求方法,请使用 POST。' }); } }
2. 同步 Schema 与数据库
确保数据库结构与 schema.prisma 一致,运行迁移命令:
npx prisma migrate dev --name init
如果是首次初始化,该命令会创建数据库并应用 schema;若已有迁移记录,直接运行 npx prisma migrate dev 即可。
3. 重新生成 Prisma Client
修改 schema 后必须重新生成客户端,保证代码与 schema 同步:
npx prisma generate
额外验证
开发环境中可通过 Prisma Studio 直观查看数据库内容,确认数据是否正确插入:
npx prisma studio
内容的提问来源于stack exchange,提问作者Esteb
相关产品推荐
相关产品推荐

