NextJS beta应用程序路由器,GET请求在获取时失败,但在浏览器中可以工作

ibrsph3r  于 2023-05-22  发布在  其他
关注(0)|答案(1)|浏览(156)

我使用nextJS与应用程序目录和我有这个问题,做一个GET请求...
我有下面的函数来从my /project route. ts中获取项目。
它似乎没有触发routes.ts中的GET函数
log(“in GET /projects”),从来没有被触发,我得到了一个意外的JSON结束错误。
但是,如果我在浏览器中访问“http://localhost:3000/api/project”,它确实会在我的routes.ts中命中GET函数,并且我会得到JSON...
谢谢你的帮助,我已经做了一段时间了……

export const projectsGet = async () => {
  const res = await fetch("http://localhost:3000/api/project", {
    method: "GET",
    headers: {
      "Content-Type": "application/json",
    },
  });

  console.log(res, 'before')     //triggers
  const data = await res.json()  // error: Unexpected end of JSON input
  console.log(data, 'after')     // does not trigger
  
  return data
};

这是我的项目路由,在/API/project/route. ts中。我在同一个文件中有一个POST路由,它创建了一个项目,工作正常...

export const GET = async () => {
  console.log("in GET /projects");  //never triggers unless i visit the URL in browser

  const user = await getUserFromCookie(cookies());

  const projects = await db.project.findMany({
    where: {
      ownerId: user?.id,
    },
    include: {
      tasks: true,
    },
  });

  const filteredProjects = projects.filter((project) => {
    return project.deleted === false;
  });

  return NextResponse.json(filteredProjects);
};
kr98yfug

kr98yfug1#

我认为你应该在`/API/project/route. ts中以这种形式返回json。

export async function GET(){
  console.log("in GET /projects");

  const user = await getUserFromCookie(cookies());

  const projects = await db.project.findMany({
    where: {
      ownerId: user?.id,
    },
    include: {
      tasks: true,
    },
  });

  const filteredProjects = projects.filter((project) => {
    return project.deleted === false;
  });

  return new Response(JSON.stringify(filteredProjects));
};

相关问题