Next.js项目API路由返回404 Not Found问题求助
Next.js API返回404的原因及修复方案
核心原因:App Router API写法错误(混用Pages Router类型)
你的API路由采用了App Router的目录结构(app/api/worker-callback/route.ts),但代码错误混用了Pages Router的类型和响应逻辑,导致路由无法正确处理请求,最终返回404。
具体问题点:
- App Router的API处理函数不需要接收
res参数,NextApiResponse是Pages Router专属类型,App Router下的POST函数仅需接收req参数。 - 你试图通过
res.status(403).json()返回响应,这不符合App Router规范——App Router要求直接返回NextResponse对象,这种错误的响应方式会触发路由处理异常,进而返回404。 - 错误分支调用
res方法后未终止函数,后续代码仍会执行,但更关键的是res在App Router环境中不存在,会引发运行时错误。
修正后的代码
将route.ts修改为符合App Router规范的写法:
import { NextResponse } from "next/server"; type ResponseData = { error?: string }; export async function POST(req: Request) { if (req.headers.get('Authorization') !== process.env.BACKEND_SECRET!) { return NextResponse.json({ error: "Allowed only by backend" }, { status: 403 }); } return NextResponse.json({}); }
额外检查点
- 确认Next.js版本为13.4+(App Router稳定版从13.4开始),版本过低可能导致App Router路由无法正常识别。
- 验证
main目录确实是Next.js项目根目录:构建命令cd main && next build说明根目录在main下,app目录位置正确,API路径/api/worker-callback是合法的。
内容的提问来源于stack exchange,提问作者porton
相关产品推荐
相关产品推荐

