问题是,在开发中一切都运行良好,但是如果我开始生产,在生产中的 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" }。但这不起作用...
请求在构建时被缓存。
在下面添加这一行,这样它就不会被缓存:
export const revalidate = 0
服务器端无法调用NextJS自身的API。 可以在客户端调用。 例如:
应用路由版本的服务端组件无法调用self API。 页面路由版本的 getServerSideProps 方法中无法调用 self 接口。
希望这个答案对你有帮助。
将客户端获取函数放入 useEffect() 中并调用它......它对我有用