コンテンツにスキップ

サポートされている機能

サポートされている Next.js バージョン

@cloudflare/next-on-pages は、Next.js 13 および 14 のすべてのマイナーおよびパッチバージョンをサポートしています。互換性を確保するために、定期的に手動および自動テストを実施しています。

Node.js

Next.js には 2 つの “ランタイム” ↗ — “Edge” と “Node.js” があります。Cloudflare 上で Next.js アプリを実行する際には、利用可能な Node.js API を使用できますが、現在は Next.js の “Edge” ランタイムのみを使用できます。

Workers ランタイムは 広範な Node.js API のセットをサポートしています — しかし、Next.js Edge ランタイムのコードは意図的にこれを制約しています ↗。その結果、Next.js アプリで動作する Node.js API は以下のものだけです:

  • buffer
  • events
  • assert
  • util
  • async_hooks

サポートされている機能

ルーター

Cloudflare は Next.js の App ルーター ↗ の使用を推奨しています。

Cloudflare はまた、Next.js の古い Pages ↗ ルーターもサポートしています。

next.config.mjs プロパティ

next.config.js — app ルーター ↗ および `next.config.js - pages ルーター ↗

オプションNext ドキュメントサポート
appDirapp ↗✅
assetPrefixpages ↗, app ↗🔄
basePathpages ↗, app ↗✅
compresspages ↗, app ↗N/A1
devIndicatorspages ↗, app ↗N/A2
distDirpages ↗, app ↗N/A3
envpages ↗, app ↗✅
eslintpages ↗, app ↗✅
exportPathMappages ↗, app ↗N/A4
generateBuildIdpages ↗, app ↗✅
generateEtagspages ↗, app ↗🔄
headerspages ↗, app ↗✅
httpAgentOptionspages ↗, app ↗N/A
imagespages ↗, app ↗✅
incrementalCacheHandlerPathapp ↗🔄
loggingapp ↗N/A5
mdxRsapp ↗✅
onDemandEntriespages ↗, app ↗N/A6
optimizePackageImportsapp ↗✅/N/A7
outputpages ↗, app ↗N/A8
pageExtensionspages ↗, app ↗✅
Partial Prerendering (experimental)app ↗❌9
poweredByHeaderpages ↗, app ↗🔄
productionBrowserSourceMapspages ↗, app ↗🔄10
reactStrictModepages ↗, app ↗❌11
redirectspages ↗, app ↗✅
rewritespages ↗, app ↗✅
Runtime Configpages ↗, app ↗❌12
serverActionsapp ↗✅
serverComponentsExternalPackagesapp ↗N/A13
trailingSlashpages ↗, app ↗✅
transpilePackagespages ↗, app ↗✅
turbopages ↗, app ↗🔄
typedRoutesapp ↗✅
typescriptpages ↗, app ↗✅
urlImportspages ↗, app ↗✅
webpackpages ↗, app ↗✅
webVitalsAttributionpages ↗, app ↗✅
- ✅: サポートされている
- 🔄: 現在サポートされていない
- ❌: サポートされていない
- N/A: 該当なし

Internationalization

CloudflareはNext.jsの国際化(i18n)ルーティング ↗もサポートしています。

Rendering and Data Fetching

Incremental Static Regeneration

Incremental Static Regeneration (ISR)14を使用する場合、@cloudflare/next-on-pagesはビルドプロセスによって生成された静的フォールバックファイルを使用します。

これは、アプリケーションがISR/プリレンダリングされたページを正しく提供し続けることを意味します(ただし、再生成の側面はありません)。これがアプリケーションに問題を引き起こす場合は、ページをサーバーサイドレンダリング(SSR)を使用するように変更してください。

Background

ISRページはVercel CLIによって構築され、Vercelのプリレンダーファンクション ↗を生成します。これらは、ページをキャッシュから提供しながらバックグラウンドで呼び出すことができるNode.jsのサーバーレス関数です。

これらはCloudflare Pagesで使用することはできず、現在エッジランタイム ↗と互換性がありません。

Dynamic handling of static routes

@cloudflare/next-on-pagesは標準の静的生成されたルートをサポートしています。

動的なNode.jsベースのオンデマンド処理はサポートしていません。

詳細については、以下を参照してください:

Caching and Data Revalidation

再検証とnext/cacheはCloudflare Pagesでサポートされており、さまざまなバインディングを使用できます。詳細については、キャッシングのドキュメントを参照してください。

Footnotes

  1. compression: Cloudflare は gzip または brotli 圧縮を自動的に適用します。ローカルで Wrangler を使用して開発している場合、圧縮は適用されません。 ↩

  2. dev indicators: wrangler pages dev を使用して開発している場合、dev インジケーターが表示されないため、アプリケーションがハードリフレッシュされます。next dev を使用してローカルでアプリを実行すると、このオプションは正常に機能します。 ↩

  3. setting custom build directory: @cloudflare/next-on-pages を使用して構築されたアプリケーションは .next ディレクトリに依存しないため、このオプションは実際には適用されません(@cloudflare/next-on-pages の同等物は --outdir フラグを使用することです)。 ↩

  4. exportPathMap: SSG 用に使用されるオプションで、@cloudflare/next-on-pages を使用して構築されたアプリには適用されません。 ↩

  5. logging: wrangler pages dev を使用して開発している場合、追加のロギングは適用されません(実質的にプロダクションビルドを実行しているため)。next dev を使用してローカルでアプリを実行すると、このオプションは正常に機能します。 ↩

  6. onDemandEntries: 開発中の Next.js サーバーのオプションであり、私たちはこれに依存していないため、適用されません。 ↩

  7. optimizePackageImports: @cloudflare/next-on-pages はチャンクの重複を排除し、モジュールのレイジーローディングに基づいた実装を提供します。これに基づいて optimizePackageImports を適用しても、CLI によって生成される出力には影響しません。ただし、この構成はビルドプロセスを高速化するために使用できます(next dev を実行する場合や、プロダクションビルドを生成する場合の両方で)。 ↩

  8. output: @cloudflare/next-on-pages は標準の Next.js 出力で動作し、standalone はそれと互換性がなく、export は静的サイトを生成するために使用され、@cloudflare/next-on-pages を実行する必要はありません。 ↩

  9. Partial Prerendering (experimental): 公式の Next.js ドキュメント ↗ に示されているように、Partial Prerendering は Node.js ランタイム専用に設計されています。そのため、@cloudflare/next-on-pages(エッジランタイムでのみ動作する)とは根本的に互換性がありません。 ↩

  10. productionBrowserSourceMaps: @cloudflare/next-on-pagesによって行われるwebpackチャンクの重複排除は、現在のところソースマップを保持しないため、このオプションは実装できません。将来的にはソースマップを保持することを試みるかもしれませんが、その場合、このオプションも簡単にサポートできるはずです。 ↩

  11. reactStrictMode: 現在、アプリケーションはreact strict mode(ローカル開発機能)がどちらの方法でも機能しないようにビルドされています。strict modeを機能させることができれば、このオプションはおそらくすぐに機能するでしょう。 ↩

  12. runtime configuration: ランタイム構成の実装を検討することはできますが、これはレガシー構成であり、環境変数を代わりに使用すべきなので、あまり価値はないでしょう。 ↩

  13. serverComponentsExternalPackages: このオプションはNode.jsで実行されるアプリケーション向けのものであり、Cloudflare Pagesで実行されるアプリケーションには関連しません。 ↩

  14. Incremental Static Regeneration (ISR) ↗は、Next.jsのレンダリングモードで、ページを自動的にキャッシュし、新しいデータで定期的に再生成することを可能にします。 ↩