Next.js 15动态API路由[id]出现“Invalid GET Export”构建错误
我在使用Next.js 15的App Router开发/app/api/agencies/[id]动态API路由时,执行npm run build遇到以下TypeScript错误:
Type error: Route "src/app/api/agencies/[id]/route.ts" has an invalid "GET" export:
Type "{ params: { id: string; }; }" is not a valid type for the function's second argument.
尝试过修改函数签名、更换params类型、调整tsconfig等方法均无效,以下是可行的解决思路:
解决方案1:使用Next.js官方提供的路由参数类型
Next.js App Router的路由上下文参数有官方预定义的类型,直接自定义{ params: { id: string } }会导致类型不匹配。正确的做法是导入next/server中的Params类型来约束参数结构:
- 导入
Params类型:
import { NextRequest, NextResponse, Params } from "next/server";
- 修改GET函数的签名,用泛型指定参数结构:
export async function GET( req: NextRequest, { params }: { params: Params<{ id: string }> } ) { // 后续逻辑保持不变,直接使用params.id即可 const { id } = params; // ... }
这样TypeScript就能正确识别参数类型,避免构建错误。
解决方案2:确保tsconfig.json继承Next.js官方配置
如果你的tsconfig.json没有继承Next.js的核心配置,可能会导致类型定义不兼容。修改tsconfig.json如下:
{ "extends": "next/core-web-vitals", "compilerOptions": { "target": "esnext", "module": "esnext", "strict": true } }
继承官方配置后,TypeScript会自动加载Next.js的所有类型定义,避免自定义类型与官方类型冲突。
解决方案3:检查Next.js版本兼容性
Next.js 15部分版本可能存在类型定义的小bug,如果上述方法无效,可以尝试升级到最新的稳定版,或者回退到15.1.x的其他小版本,确保类型定义文件完整。
内容的提问来源于stack exchange,提问作者hasratyan

