Next.js 13.4 获取在生产中不起作用

问题描述 投票:0回答:3

问题是,在开发中一切都运行良好,但是如果我开始生产,在生产中的 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 文件

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" }。但这不起作用...

next.js fetch prisma production next.js13
3个回答
0
投票

请求在构建时被缓存。

在下面添加这一行,这样它就不会被缓存:

export const revalidate = 0

0
投票

服务器端无法调用NextJS自身的API。 可以在客户端调用。 例如:

应用路由版本的服务端组件无法调用self API。 页面路由版本的 getServerSideProps 方法中无法调用 self 接口。

希望这个答案对你有帮助。


0
投票

将客户端获取函数放入 useEffect() 中并调用它......它对我有用

© www.soinside.com 2019 - 2024. All rights reserved.