Из-за чего при build проекта на Next js ошибка TypeError: fetch failed ([cause]: ConnectTimeoutError: Connect Timeout Error)?

Ссылка скопирована
0 ответов

По вводным:, подскажите, есть проект на Next js 14.2.3. С вот такими роутами:

app/(routes)/(catalog)/foo/[...slug]/page.jsx app/(routes)/(catalog)/bar/[...slug]/page.jsx app/(routes)/(catalog)/test/[...slug]/page.jsx

По вводным: внутри каждого компонента одинаковая логика генерации, но почему-то при npm run build на сервере падают много таких вот ошибок:

TypeError: fetch failed at node:internal/deps/undici/undici:12500:13 at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async Module.w ([MASKED]//.next/server/app/(routes)/(catalog)/foo/[...slug]/page.js:1:7994) { digest: '1853411761', [cause]: ConnectTimeoutError: Connect Timeout Error at onConnectTimeout (node:internal/deps/undici/undici:6621:28) at node:internal/deps/undici/undici:6573:50 at Immediate._onImmediate (node:internal/deps/undici/undici:6605:13) at process.processImmediate (node:internal/timers:478:21) at process.callbackTrampoline (node:internal/async_hooks:130:17) { code: 'UND_ERR_CONNECT_TIMEOUT' } }

По вводным: компонент у меня вот такой:

import React, {Suspense} from "react"; import {notFound} from "next/navigation"; export async function generateMetadata({params}) { let info = (process.env.NODE_ENV === 'development') ? {cache: 'no-store'} : {}; if (params.slug) { const path = `${process.env.API_URL}/path/${params.slug.join('/')}?type=foo` const res = await fetch(path, info) if (res.ok) { const instance = await res.json() return { title: instance?.data?.title, description: instance?.data?.description, robots: { index: instance?.data?.index, follow: instance?.data?.follow, } } } } return { title: '', description: '', } } export async function generateStaticParams() { let result = []; let info = (process.env.NODE_ENV === 'development') ? {cache: 'no-store'} : {}; for (let l = 1; l <= 3; l++) { const path = `${process.env.API_URL}/path/l/${l}` const res = await fetch(path, info) const items = await res.json() let r = items.map(elem => { return { slug: elem.url.split("/") } }) result = [...result, ...r] } return result } export default async function Page({params, searchParams}) { let items = []; let info = (process.env.NODE_ENV === 'development') ? {cache: 'no-store'} : {next: {revalidate: 120}}; const {slug} = params const page = Math.max(1, Number(searchParams?.page ?? 1)) const res = await fetch(`${process.env.API_URL}/path/s/${slug.join('/')}?type=foo`, info) if (!res.ok) { return notFound(); } const instance = await res.json() if (instance?.data) { const resEx = await fetch(buildUrl(instance?.data, {page}), {next: {revalidate: 120}}) if (!resEx.ok) { return notFound(); } items = await resEx.json() } return ( <> ... </>); }

По вводным: fetch делает запросы к бэкенд сервису, я в логах php-fpm видел что он в момент билда пытается увеличитьpm.max_children settingНужно понять: возможно не хватает на сервер ресурсов?

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно