我正在为Next.js应用程序开发一个微型REST API.如果我将route.ts放在如下所示的rootDir->app->api->Hello->route.ts中,那么它可以工作:

//route.ts
export async function GET(request: Request) {
  return new Response('Hello, Next.js!')
}

我可以通过Postman向本地主机发出一个成功的GET请求:3000/api/Hello.

我现在将代码更改为以下代码:

import { NextApiRequest, NextApiResponse } from "next";

export async function GET(request: NextApiRequest, response: NextApiResponse) {
  return response.json({ message: "Hello, Next.js!" });
}

现在它失败了,我收到错误消息:

error TypeError: response.json is not a function

这个问题是已知的,但是升级到最新的LTS或最新的 node 版本并不能解决我的问题:https://github.com/vercel/next.js/issues/48524.

推荐答案

虽然您的try 将在Next.js的pages目录中工作,这是设置路由的初始方法,但对于较新的app文件夹,您需要使用next/server中的NextResponse对象,您可以在doc上阅读:

import { NextResponse } from "next/server";

export async function GET(request: Request) {
  return NextResponse.json({ messsage: "Hello World" });
}

Javascript相关问答推荐

为什么剧作家在导航时会超时?

文件阅读器未读取一个文件

v-textfield的规则找不到数据中声明的元素

基于每个索引迭代嵌套对象

用户单击仅在JavaScript中传递一次以及其他行为

禁用从vue.js 2中的循环创建的表的最后td的按钮

使用json文件字符串来enum显示类型字符串无法按照计算的enum成员值的要求分配给类型号

vscode扩展-webView Panel按钮不起任何作用

将状态向下传递给映射的子元素

如何在Obsidian dataview中创建进度条

配置WebAssembly/Emscripten本地生成问题

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

本地库中的chartjs-4.4.2和chartjs-plugin-注解

用于在路径之间移动图像的查询

连接到游戏的玩家不会在浏览器在线游戏中呈现

确保函数签名中的类型安全:匹配值

传递方法VS泛型对象VS事件特定对象

在查看网页时,如何使HTML中的按钮工作方式类似于鼠标上的滚轮或箭头键?

处理app.param()中的多个参数

Cherrio JS返回父div的所有图像SRC