使用 fetch 方法在 nextjs13 中获取数据时出错(错误:获取失败)

Has*_*ghi 6 node.js next.js next.js13

我将Nextjs13v13.4.4 与Nodejsv18.16.0 一起使用,有时当我运行页面时,我收到此错误Error: fetch failed,当我记录错误时,会看到此错误

Sliders TypeError: fetch failed
    at Object.fetch (node:internal/deps/undici/undici:11457:11)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
  cause: Error: read ECONNRESET
      at TLSWrap.onStreamRead (node:internal/stream_base_commons:217:20)
      at TLSWrap.callbackTrampoline (node:internal/async_hooks:130:17) {
    errno: -4077,
    code: 'ECONNRESET',
    syscall: 'read'
  }
}
- error TypeError: fetch failed
- error TypeError: fetch failed
digest: "2026204822"
Run Code Online (Sandbox Code Playgroud)

这是我调用端点的方法

import errorMessage from "../errorMessage.json";
import { MainSliderType } from "@/app/types/response/slider";
const serverUrl = process.env.SERVERURL;

export const mainSliderFetcher = async (): Promise<MainSliderType[]> => {
  try {
    const responses = await fetch(`${serverUrl}/sliders/`, {
      method: "GET",
      headers: {
        "Content-Type": "application/json",
      },
      cache: "no-store",
    });

    if (!responses.ok) {
      throw new Error(errorMessage.fetchError);
    } else return responses.json();
  } catch (err) {
    console.log("sliders", err);
    throw new Error(errorMessage.fetchError);
  }
};
Run Code Online (Sandbox Code Playgroud)

这是我page.tsx调用这个方法时的。

export default async function Home() {
  const getSliders = mainSliderFetcher();
  const getBanners = mainBannersFetcher();

  const [sliders, banners] = await Promise.all([getSliders, getBanners]);

  return (
    <main className="flex min-h-screen flex-col items-center">
      <MainCarousel data={sliders} />
      <div className="flex flex-col px-4 lg:px-16">
        <TopBanners data={banners} />
        <SmallAbout />
      </div>
    </main>
  );
}
Run Code Online (Sandbox Code Playgroud)

在我使用Nodejsv16.08 之前,我遇到了同样的问题