我正在try 从Next 13.2.5更新到14.1.0,并使用app/api/example/route.js而不是pages/api/example.js.

我在下面的代码中得到错误TypeError: res.status is not a function at POST.

我的旧版本pages/api/example.js完全一样,但没有POST,所以我用了export async function(req, res),它运行得很好.但在更新版本中try 了不同的方面(提到了here),但我无法理解,我被困住了.任何帮助都将不胜感激.

import { Configuration, OpenAIApi } from "openai";

const configuration = new Configuration({
  apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);

export async function POST(req, res) {
  if (!configuration.apiKey) {
    res.status(500).json({
      error: {
        message: "OpenAI API key not configured",
      },
    });
    return;
  }

  const { messages } = req.body;

  if (!Array.isArray(messages)) {
    res.status(400).json({
      error: {
        message: "Invalid conversation format",
      },
    });
    return;
  }

  try {
    const incomingMessages = req.body.messages || [];

    const messages = [
      {
        role: "system",
        content: `This is a roleplay. You are a participant in a market research study, simulating a 
        potential customer's perspective on a new product.
        `,
      },

      ...incomingMessages,
    ];

    const completion = await openai.createChatCompletion({
      model: "gpt-3.5-turbo",
      messages: messages,
      temperature: 0,
      max_tokens: 1000,
    });

    const responseMessage = completion.data.choices[0].message;
    const updatedConversationHistory = [...messages, responseMessage];

    res.status(200).json({ messages: updatedConversationHistory });
  } catch (error) {
    if (error.response) {
      console.error(error.response.status, error.response.data);
      res.status(error.response.status).json(error.response.data);
    } else {
      console.error(`Error with OpenAI API request: ${error.message}`);
      res.status(500).json({
        error: {
          message: "An error occurred during your request.",
        },
      });
    }
  }
}

推荐答案

app路由内,路由处理程序只将请求作为参数接收.您必须使用ResponseNextResponse返回响应,如下所示:

import { NextResponse } from "next/server";

// ...

export async function POST(req) {
  if (!configuration.apiKey) {
    return NextResponse.json(
      { error: { message: "OpenAI API key not configured" } },
      { status: 500 }
    );
  }
  // ...
}

Javascript相关问答推荐

是否有方法在OpenWeatherMap API中获取过go 的降水数据?

Redux工具包查询(RTKQ)端点无效并重新验证多次触发

提交表格后保留Web表格中的收件箱值?

如何在不创建新键的情况下动态更改 map 中的项目?

如何从URL获取令牌?

setcallback是什么时候放到macrotask队列上的?

如何强制Sphinx中的自定义js/css文件始终加载更改而不缓存?

在运行时使用Next JS App Router在服务器组件中运行自定义函数

如何将innerHTML字符串修剪为其中的特定元素?

为什么这个.add.group({})在教程中运行得很好,但在我的游戏中就不行了?

如何在JAVASCRIPT中合并两组对象并返回一些键

删除加载页面时不存在的元素(JavaScript)

删除元素属性或样式属性的首选方法

使用CEPRESS截取时,cy.Wait()在等待5000ms的第一个路由请求时超时

将Singleton实例设置为未定义后的Angular 变量引用持久性行为

JavaScript:多个图像错误处理程序

脚本语法错误只是一个字符串,而不是一个对象?

我想为我的Reaction项目在画布上加载图像/视频,图像正在工作,但视频没有

如何在Java脚本中添加一个可以在另一个面板中垂直调整大小的面板?

使用JAVASCRIPT-使用If和Else If多次判断条件-使用JAVASRIPT对象及其属性