Next.js 13.4 fetching无法在生产环境中工作

p5fdfcr1  于 2023-06-29  发布在  其他
关注(0)|答案(2)|浏览(151)

问题是,一切都在开发中完美地工作,但是如果我在生产中开始,在prisma中创建一行,当我试图检索我在生产中创建的行时,他只检索了npm run build之前的旧行。问题是什么,如何解决?
前端:

const fetchPdfFiles = async () => {
    try {
      console.log("before fetching");
      const response = await fetch("/api/pdf-files");
      if (response.ok) {
        const data = await response.json();

        setPdfFiles(data);
      } else {
        console.error("Failed to fetch PDF files");
      }
    } catch (err) {
      console.error(err);
    }
  };

后端:/API/pdf-files

import { NextRequest, NextResponse } from "next/server";
import fs from "fs";
import path from "path";
import prisma from "@/app/libs/prismadb";

export async function GET(req: NextRequest, res: NextResponse) {
  console.log("Before try catch block");
  try {
    const pdfFiles = await prisma?.pdfFile.findMany();

    return new NextResponse(JSON.stringify(pdfFiles));
  } catch (error: any) {
    console.error(error);
    return new NextResponse(error);
  }
}

我也尝试在前端做{ cache:“no-store”},{ cache:“no-cache”}。但它不工作...

8mmmxcuj

8mmmxcuj1#

正在生成时缓存请求。
在下面添加这一行,这样它就不会被缓存:

export const revalidate = 0
xuo3flqw

xuo3flqw2#

服务器端不能调用NextJS自身的API。可以在客户端调用。例如:
无法在应用路由版本的服务器组件中调用self API。页面路由版本的getServerSideProps方法中无法调用self API。
我希望这个答案对你有帮助。

相关问题