搜索

首页  >  问答  >  正文

如何修复 500 代码服务器错误 Next JS API

<p>我正在尝试使用 NextJS 中的 OPEN AI GPT 4 模型构建一个聊天机器人。但是,当我向 http://localhost:3001/api/generate 发送 POST 请求时,我收到状态代码 500 的响应和以下错误消息:</p> <blockquote> <p>类型错误:无法读取未定义的属性(读取“标头”)。</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 = new Configuration({ apiKey: process.env.OPENAI_API_KEY, }); const openai = new OpenAIApi(configutation); export async function POST(request: Request) { const body = await request.json(); const { prompt } = body; if (!prompt || prompt === "") { return new Response("Please send your prompt", { status: 400 }); } try { const aiResult = await openai.createCompletion({ model: "gpt-4", prompt, temperature: 0.9, max_tokens: 8192, }); const aiText = aiResult.data.choices[0].text?.trim() || "Something went wrong!"; return NextResponse.json({ text: aiText }); } catch (error) { console.log(error); } }</pre> <p>我是 NextJS 13 的新手,但是当我尝试发送“Hello World”之类的静态响应时,我没有遇到任何错误</p>
P粉513316221P粉513316221481 天前547

全部回复(1)我来回复

  • 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 });

    回复
    0
  • 取消回复