You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

提交课程触发错误:Prisma Client未完成初始化

解决Prisma Client初始化失败问题("@prisma/client did not initialize yet")

问题描述

尝试保存课程名称时错误弹窗触发,已确认Prisma与MySQL连接正常,npx prisma generate和npx prisma push执行成功,但调用/api/courses接口时仍报错"@prisma/client did not initialize yet"。

相关代码

提交函数代码

const onSubmit = async (values: z.infer<typeof formSchema>) => {
    try{
        const reponse = await axios.post("/api/courses", values)
        router.push(`/teacher/courses/${reponse.data.id}`);
        toast.success("Course created successfully")
            }catch{
                toast.error("Something went wrong")
            }
    };

API路由代码(/api/courses/route.ts)

import { db } from "@/lib/db";
import { auth } from "@clerk/nextjs/server";
import { NextResponse } from "next/server";

export async function POST(
    req: Request,
) {
    try {
        const { userId } = await auth();
        const { title } = await req.json();

        if (!userId) {
            return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
        }

        const course = await db.course.create({
            data: {
                title,
                userId,
            },
        });

        return NextResponse.json(course);

    } catch (error) {
        console.log("[COURSES]", error);
        return NextResponse.json({ error: "Internal Server Error" }, { status: 500 });
    }
}

终端错误日志

npm run dev

> rpm-lms0.2@0.1.0 dev
> next dev

   ▲ Next.js 15.3.1
   - Local:        http://localhost:3000
   - Network:      http://192.168.1.15:3000
   - Environments: .env

 ✓ Starting...
 ✓ Ready in 6.7s
 ○ Compiling /middleware ...
 ✓ Compiled /middleware in 4.5s (224 modules)
<w> [webpack.cache.PackFileCacheStrategy] Serializing big strings (117kiB) impacts deserialization performance (consider using Buffer instead and decode when needed)
 ○ Compiling /teacher/create ...
 ✓ Compiled /teacher/create in 19.9s (1659 modules)
 GET /teacher/create 200 in 22577ms
 ○ Compiling /favicon.ico ...
 ✓ Compiled /favicon.ico in 2.2s (1017 modules)
 GET /favicon.ico 200 in 2729ms
 ○ Compiling /api/courses ...
 ✓ Compiled /api/courses in 2.1s (1667 modules)
Initializing Prisma Client...
 ⨯ Error: @prisma/client did not initialize yet. Please run "prisma generate" and try to import it again.
    at eval (lib\db.ts:8:35)
    at <unknown> (rsc)/./lib/db.ts (D:\Work\My Projects\LMS\rpm-lms0.2\.next\server\app\api\courses\route.js:33:1)
    at __webpack_require__ (D:\Work\My Projects\LMS\rpm-lms0.2\.next\server\webpack-runtime.js:33:42)
    at eval (webpack-internal:///(rsc)/./app/api/courses/route.ts:5:65)
    at <unknown> (rsc)/./app/api/courses/route.ts (D:\Work\My Projects\LMS\rpm-lms0.2\.next\server\app\api\courses\route.js:22:1)
    at __webpack_require__ (D:\Work\My Projects\LMS\rpm-lms0.2\.next\server\webpack-runtime.js:33:42)
    at __webpack_require__ (D:\Work\My Projects\LMS\rpm-lms0.2\.next\server\webpack-runtime.js:33:42)
    at __webpack_exec__ (D:\Work\My Projects\LMS\rpm-lms0.2\.next\server\app\api\courses\route.js:184:39)
    at <unknown> (D:\Work\My Projects\LMS\rpm-lms0.2\.next\server\app\api\courses\route.js:185:309)
    at __webpack_require__.X (D:\Work\My Projects\LMS\rpm-lms0.2\.next\server\webpack-runtime.js:168:21)
    at <unknown> (D:\Work\My Projects\LMS\rpm-lms0.2\.next\server\app\api\courses\route.js:185:47)
    at Object.<anonymous> (D:\Work\My Projects\LMS\rpm-lms0.2\.next\server\app\api\courses\route.js:188:3)
   6 |
   7 | console.log("Initializing Prisma Client...");
>  8 | export const db = global.prisma || new PrismaClient();
     |                                   ^
   9 |
  10 | if (process.env.NODE_ENV !== "production") {
  11 |     global.prisma = db; {
  page: '/api/courses'
}

解决方案

  1. 修正lib/db.ts语法错误
    从错误日志可见,lib/db.ts第11行存在多余的大括号,导致代码解析失败。正确写法:
import { PrismaClient } from "@prisma/client";

console.log("Initializing Prisma Client...");
export const db = global.prisma || new PrismaClient();

if (process.env.NODE_ENV !== "production") {
  global.prisma = db;
}
  1. 清理缓存并重新生成
    执行以下命令清除Next.js缓存,重新生成Prisma Client并重启服务:
rm -rf .next/
npx prisma generate
npm run dev
  1. 验证Prisma配置
    确认prisma/schema.prisma中客户端生成配置正确:
generator client {
  provider = "prisma-client-js"
}
  1. 检查环境变量
    确保.env中的DATABASE_URL格式正确,能正常连接MySQL:
DATABASE_URL="mysql://用户名:密码@localhost:3306/数据库名"

内容的提问来源于stack exchange,提问作者Saif Sabry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 08:20:00