Next.js App Router API Route返回500错误求助
问题原因
你的代码在Next.js App Router的API路由中直接返回了普通JavaScript对象,但App Router要求必须使用NextResponse类来构建响应。这种不符合规范的返回格式导致服务器无法正确解析响应,最终返回500错误。另外你导入的NextApiRequest/NextApiResponse是Pages Router专用的API,在App Router场景下完全无用。
修正后的代码
import { PrismaClient } from "@prisma/client" import { NextResponse } from "next/server"; // 全局缓存Prisma实例,避免开发环境热重载重复创建实例 const prisma = global.prisma || new PrismaClient(); if (process.env.NODE_ENV !== 'production') global.prisma = prisma; export async function GET() { try { const machines = await prisma.machines.findMany(); console.log(machines, "machines") // 使用NextResponse.json返回标准格式的响应 return NextResponse.json(machines, { status: 200 }); } catch (error) { console.error(error) return NextResponse.json( { error: "获取数据时发生错误。" }, { status: 500 } ); } }
关键修改说明
- 移除了无用的
NextApiRequest/NextApiResponse导入 - 用
NextResponse.json()替代直接返回对象,这是App Router API路由的标准响应方式 - 添加Prisma实例的全局缓存,解决开发环境热重载时重复创建实例的警告问题
内容的提问来源于stack exchange,提问作者Andre Pujol
相关产品推荐
相关产品推荐

