Next.js API路由请求停滞及TypeError报错求助
解决Next.js API路由响应停滞及
NextResponse.next()报错问题 问题原因
- 第一个错误
API resolved without sending a response:你的API路由函数没有返回任何HTTP响应,Next.js无法向客户端返回结果,导致请求挂起。 - 第二个错误
TypeError: this._headers.getAll is not a function:NextResponse.next()是Next.js中间件的专用方法,用于传递请求到下一个处理环节,不能在API路由中用来返回响应。
修正后的代码
import { PrismaClient } from '@prisma/client' import { NextResponse } from "next/server"; // 避免开发环境重复创建PrismaClient实例 const prisma = global.prisma || new PrismaClient() if (process.env.NODE_ENV !== 'production') global.prisma = prisma export async function GET(request: Request) { try { const users = await prisma.user.findMany(); console.log(users); // 返回包含用户数据的JSON响应 return NextResponse.json(users); } catch (error) { // 处理错误,返回500状态码和错误信息 return NextResponse.json({ error: 'Failed to fetch users' }, { status: 500 }); } }
关键说明
- API路由必须返回一个
NextResponse实例(比如NextResponse.json()、NextResponse.text()等)来结束请求流程。 - 开发环境中重复热重载会创建多个PrismaClient实例,通过
global.prisma复用实例可避免数据库连接过多的问题。 - 加入错误捕获逻辑,能在数据库查询失败时返回明确的错误响应,方便调试。
内容的提问来源于stack exchange,提问作者عثمان غني
相关产品推荐
相关产品推荐

