Не могу получить данные на стороне сервера next.js только в производственном доменеJavascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 Не могу получить данные на стороне сервера next.js только в производственном домене

Сообщение Anonymous »

У меня есть приложение Next.js, и мне нужно получить метаданные от API. Я написал базовый запрос на выборку в GenerateMetAdata в page.tsx. В локальном или любом другом домене HTTPS все работает нормально, но в нашем производственном домене я не могу получить данные (на стороне клиента все в порядке, поэтому запрос отправляется, и после ожидания 50 -х годов в настоящее время я получаю ошибку тайм -аута. Я пробовал много подходов и пытаюсь решить это в течение 3 дней.

Код: Выделить всё

function logToFile(message: string) { console.log(message) }

export async function generateMetadata({ params, }: { params: Promise }): Promise { console.log('metadata start') const { slug, locale } = await params
const apiUrl = `${process.env.NEXT_PUBLIC_BASE_URL}${BLOG_DETAIL.replace('{slug}', slug)}`
logToFile(`🔍 Fetching metadata for slug: ${slug}`)
logToFile(`🌐 API URL: ${apiUrl}`)
logToFile(`🌍 Locale: ${locale}`)
logToFile(`🧾 Headers: ${JSON.stringify({ 'Accept-Language': locale || i18nConfig.defaultLocale })}`)

const controller = new AbortController()
const timeout = 1_000
const timeoutId = setTimeout(() => {
controller.abort()
logToFile('❌ Request timed out')
}, timeout)

try {
const res = await fetch(apiUrl, {
signal: controller.signal,
next: { revalidate: 600 },
headers: {
Accept: 'application/json, text/plain, */*',
'Accept-Encoding': 'gzip, deflate, br, zstd',
Origin: 'https://*****.**',
Referer: 'https:/*****.**',
'Accept-Language': locale || i18nConfig.defaultLocale,
},
})

logToFile(`✅ Response status: ${res.status}`)

if (!res.ok) {
logToFile(`❌ Non-OK response: ${res.status}`)
}

const data = await res.json()
logToFile(`✅ Parsed metadata: ${JSON.stringify(data)}`)
const { title, subtitle: description, photo } = data.data

return {
title,
description,
openGraph: {
title,
description,
images: [photo.thumbnail],
},
twitter: {
title,
description,
images: [photo.thumbnail],
},
}
} catch (error: any) {
clearTimeout(timeoutId)
logToFile(`❌ Fetch error: ${error?.message}`)
if (error?.cause) logToFile(`Cause: ${JSON.stringify(error.cause)}`)
if (error?.code) logToFile(`Error code: ${error.code}`)
if (error?.errno) logToFile(`Error errno: ${error.errno}`)
if (error?.stack) logToFile(`Stack: ${error.stack}`)
return {
title: 'Ошибка загрузки блога',
description: 'Не удалось получить данные этого блога',
}
}
} `
Это журнал, который я получаю:
0 | Landing | Metadata Start 0 | Landing | 🔍 Извлечение метаданных для слизняка: команда-производителя-метра-то, что к меру и чему 0 | Посадка | 🌐 api url: https: //new..io/api/blog/team-performance-metrics-wat-to-measure-and-why 0 | Landing | 🌍 Локаль: en 0 | Посадка | 🧾 Заголовки: {"accept-language": "en"} 0 | Landing | ❌ Ошибка извлечения: Fetch Fail 0 | Landing | Причина: {"name": "ConnectTimeOUterror", "Code": "und_err_connect_timeout", "Сообщение": "Ошибка времени Orte Timeout"} 0 | Landing | Стек: TypeError: Fetch Fake 0 | Landing | Узел: внутренний/deps/undici/undici: 12637: 11 0 | Посадка | at process.processticksandrejections (Узел: внутренний/процесс/task_queues: 95: 5) 0 | Посадка | at async module.c (/var/www/landing-nextjs/.next/server/app/trlocale]/blog/tssluging/page.js:1:7702) 0 | Landing | ⚠ Свойство метадатабазы ​​в экспорте метаданных не установлено для разрешения социального открытого графа или изображений Twitter, используя «http: // localhost: 3000». См. Metadata Start 0 | Landing | 🔍 Извлечение метаданных для слизняка: команда-производителя-метра-то, что к меру и чему 0 | Посадка | 🌐 api url: https: //new..io/api/blog/team-performance-metrics-wat-to-measure-and-why 0 | Landing | 🌍 Локаль: en 0 | Посадка | 🧾 Заголовки: {"accept-language": "en"} 0 | Landing | ❌ Ошибка извлечения: Fetch Fail 0 | Landing | Причина: {"name": "connectTimeOUterror", "Ваш текстовый код": "und_err_connect_timeout", "Сообщение": "Ошибка времени аута подключения"} 0 | Landing | Стек: TypeError: Fetch Fake 0 | Landing | Узел: внутренний/deps/undici/undici: 12637: 11 0 | Посадка | at process.processticksandrejections (Узел: внутренний/процесс/task_queues: 95: 5) 0 | Посадка | at async module.c (/var/www/landing-nextjs/.next/server/app/plocale]/blog/tsslug=/page.js:1:7702)образно>

Подробнее здесь: https://stackoverflow.com/questions/796 ... ion-domain
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Javascript»