blog.euxn.me

Next.js のビルドで外部 API が 429 too many request になる場合の対処

2021/1/6 (水)

nextjs

next.config.js に以下を追記します。

module.exports = () => {
  experimental: {
    cpus: 1
  }
}

なぜ?

認証を必要とする API の場合、同一ユーザから短期間に複数の API リクエストを受けた場合に 429 を返すものがあります。 これがビルド時に発生するのは、 [id].tsx 等の動的なパラメータで生成されるページを CPU 個数分並列で処理しているため、短時間に複数のリクエストが送られてしまっていることが原因です。 next dev で動作する場合は、 1 ページで 1 リクエストのため並列していないことに起因しているかと思われます。 また netlify / vercel でのビルドは成功する、というのはビルドサーバの CPU が 1 個であるように思われます。