next.js 下一个js 13应用程序路由器构建错误,(当我尝试在服务器组件中获取API路由时)

50pmv0ei  于 2023-11-18  发布在  其他
关注(0)|答案(3)|浏览(128)

当我构建下一个应用程序时,我得到一个错误(yarn run build)
我做了一个新的干净的项目,我在那里尝试。这是我的路由(/API/categories/route.ts)

export async function GET() {
  return new Response(JSON.stringify({ msg: "categories" }));
}

字符串
我的/page.tsx:

export default async function Home() {
  const res = await fetch("http://localhost:3000/api/categories");
  console.log(await res.json());

  return (
    <main>
      <h1>Home</h1>
    </main>
  );
}


当我运行开发应用程序(yarn run dev)时,我没有任何错误,但当我尝试构建时,我得到了这个错误:
x1c 0d1x的数据
我也试过从我在网络上找到的假数据JSON API中获取数据,它工作得很好。但是当我尝试使用我的API路由时,我出现了错误。
我试着改变URL像:/API/categories和http://127.0.0.1/api/categories
有什么方法可以解决这个问题吗?因为我想部署我的应用程序。
但是,当我在项目中使用prisma,我试图从prisma精确的page.tsx中获取数据,如:prisma.categories.findMany(...),我没有问题。但我希望代码是干净的,我有很多findMay()选项。所以也许你知道我如何解决这个问题,而不使用prisma在page.tsx中

f1tvaqid

f1tvaqid2#

实际上,您不需要从服务器组件调用本地API。服务器组件的目的是在服务器上呈现,然后在页面请求时提供给最终用户。因此,您可以在服务器组件内安全地直接从任何数据库源读取数据。

j1dl9f46

j1dl9f463#

从NextJs 13开始,我们可以做的是在一个单独的文件中创建一个带有服务器逻辑的导出函数(例如从数据库中获取数据),并在API路由和page.js或任何地方(在服务器上呈现)使用该函数。
这样就可以避免在建造时出现错误。

原因:

执行npm run build时不提供任何API路由
这可能会在未来的版本或某一天得到修复。

相关问题