Ошибка 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

Другие вопросы по тегам