Ошибка GraphQL (Код: 429) — Следующий проект Js
Для тех, кто работает над проектом nextjs и сталкивается с ошибкой GraphQL (код: 429), вот быстрое решение.
Предыстория...:
Я создал безголовую CMS, используя Hygraph и NextJS 13, для проекта блога. Я также использовал пакет npmgraphql-request. Изначально я хотел запустить его на сервере, но в итоге решил использовать статическую генерацию, чтобы разместить сайт, используя более простой/менее дорогой пакет хостинга. До момента, когда у меня было 10 постов, все работало нормально. Как только я увеличил количество постов, у меня появилась ошибка 429! Очевидно, у Hygraph есть ограничение на количество запросов в секунду в зависимости от типа используемого вами пакета (у меня бесплатный), поэтому, как только вы достигнете этого ограничения, вы получите эту ошибку.
2 ответа
Я столкнулся с аналогичной проблемой при использовании Next.js 13 и HygraphCMS, и вот как я ее решил:
Я создал функцию, позволяющую вводить задержку или паузу в выполнении кода, возвращая обещание, которое разрешается через определенное количество миллисекунд:
const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
Затем я изменил свою функцию выборки, чтобы включить предыдущую задержку. Задержка в 200 мс гарантирует, что она будет ограничена 5 запросами в секунду. fetchHygraphQuery — это моя абстракция client.query из Apollo:
async function fetchPostsSlugWithDelay() {
await delay(200);
const query = gql`
query PostSlug {
posts(first: 100) {
slug
}
}
`;
const { posts } = await fetchHygraphQuery(query);
return posts.map((post) => ({
slug: post.slug,
}));
}
Наконец, я использовал функциюgenerateStaticParams с добавленной задержкой:
export async function generateStaticParams() {
const slug = await fetchPostsSlugWithDelay();
return slug;
}
добавьте это в свой файл конфигурации Next.js (next.config.js)
experimental: {
workerThreads: false,
cpus: 1
},
Для получения более подробной информации, пожалуйста, обратитесь к: СТРАНИЦА РЕШЕНИЯ HYGRAPH