typescript - Typefejl på brugerdefineret API-rute i Next.js 15 ved udrulning til Netlify eller når der køres `npm run build`
Min applikation fungerer fint på npm run dev.
Men når jeg distribuerer til Netlify eller kører npm run build lokalt, får jeg denne fejl:
app/api/projects/[projectId]/activity/route.ts
Type error: Route "app/api/projects/[projectId]/activity/route.ts" has an invalid "GET" export:
Type "{ params: Record<string, string>; }" is not a valid type for the function's second argument.
Filen app/api/projects/[projectId]/activity/route.ts indeholder følgende:
import { NextRequest, NextResponse } from 'next/server';
import { supabase } from '@/lib/supabase';
export async function GET(
request: NextRequest,
{ params }: { params: Record<string, string> }
) {
try {
const projectId = params.projectId;
const { data, error } = await supabase
.from('activity_log')
.select('*')
.eq('project_id', projectId)
.order('timestamp', { ascending: false });
if (error) throw error;
return NextResponse.json({ activities: data });
} catch (error) {
return NextResponse.json({ error: 'Failed to fetch activity log' }, { status: 500 });
}
}
Dette kører NextJS 15. Er lidt af en nybegynder, så jeg giver gerne yderligere miljø- eller kodebaseoplysninger.
Jeg har prøvet alle mulige Claude-løsninger sammen med at omskrive API-ruterne fra bunden. Jeg fortsætter med at modtage de samme Type-fejl.
Svar #1
I Next 15-parametre returnerer en Promise. Så du ville skulle justere din kode lidt og pakke din eksisterende kode ind i Promise<>, så TypeScript genkender, at den returnerer en promise.
Eksempel :
{ params: Promise<Record<string, string>> }
Dette burde bestå typekontrollen.
Glem heller ikke at vente på parametrene!
const { projectId } = await params;
Se dokumentationen her til reference.
Svar #2
I stedet for { params }: { params: Record<string, string> } kan du prøve: { params }: { params: string }.
