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 }.

Relaterede artikler