suchen

Heim  >  Fragen und Antworten  >  Hauptteil

So beheben Sie den 500-Code-Serverfehler Nächste JS-API

<p>Ich versuche, einen Chatbot mit dem OPEN AI GPT 4-Modell in NextJS zu erstellen. Wenn ich jedoch eine POST-Anfrage an http://localhost:3001/api/generate sende, erhalte ich eine Antwort mit dem Statuscode 500 und der folgenden Fehlermeldung: </p> <blockquote> <p>TypeError: Eigenschaft von undefiniert kann nicht gelesen werden (read 'header'). </p> </blockquote> <p>/app/api/generate/route.ts</p> <pre class="brush:php;toolbar:false;">import { NextResponse } from "next/server"; import { Configuration, OpenAIApi } from „openai“; const configutation = neue Konfiguration({ apiKey: process.env.OPENAI_API_KEY, }); const openai = new OpenAIApi(configuration); Asynchrone Funktion exportieren POST(request: Request) { const body = waiting request.json(); const { prompt } = body; if (!prompt || prompt === "") { return new Response("Bitte senden Sie Ihre Eingabeaufforderung", { Status: 400 }); } versuchen { const aiResult = waiting openai.createCompletion({ Modell: „gpt-4“, prompt, Temperatur: 0,9, max_tokens: 8192, }); const aiText = aiResult.data.choices[0].text?.trim() || „Etwas ist schiefgelaufen!“; return NextResponse.json({ text: aiText }); } Catch (Fehler) { console.log(error); } }</pre> <p>Ich bin neu bei NextJS 13, aber wenn ich versuche, eine statische Antwort wie „Hallo Welt“ zu senden, erhalte ich keine Fehlermeldungen</p>
P粉513316221P粉513316221481 Tage vor546

Antworte allen(1)Ich werde antworten

  • P粉111927962

    P粉1119279622023-09-04 17:56:31

    Next.js API 路由期望请求对象作为第一个参数,而不是请求对象。因此,您需要将代码中的 request: Request 更改为 req: NextApiRequest 。此外,您需要将响应对象从 Response 更改为 NextResponse。

    对于请求, 由此而来

    export async function POST(request: Request) {

    到此

    export default async function generateAPI(req: NextApiRequest) {

    对于响应, 由此而来

    return new Response("Please send your prompt", { status: 400 });

    到此

    return new NextResponse("Please send your prompt", { status: 400 });

    Antwort
    0
  • StornierenAntwort