コンテンツにスキップ

トラブルシューティング

Cloudflare を使用して、フルスタック (SSR) Next.js アプリの問題をトラブルシューティングする方法について詳しく学びましょう。

エッジランタイム

Next.js プロジェクトのすべてのサーバーサイドルートを Edge runtime ルートとして構成する必要があります。各ルートに次のように追加します::

export const runtime = "edge";

アプリルーター

見つかりません

Next.js は、ビルドプロセス中にアプリケーションのために not-found ルートを自動的に生成します。特定の状況下では、Next.js はルートがサーバーサイドロジックを必要とすることを検出でき(特にルートレイアウトコンポーネントで計算が行われている場合)、Next.js は Cloudflare Pages と互換性のない Node.js ランタイムサーバーレス関数 を自動的に作成します。

これを防ぐために、エッジランタイムを明示的に使用するカスタム not-found ルートを提供できます:

export const runtime = 'edge'
export default async function NotFound() {
// ...
return (
// ...
)
}

generateStaticParams

/app ディレクトリ静的サイト生成 (SSG) を使用し、さらに generateStaticParams 関数を使用する場合、Next.js は非静的生成ルートのリクエストを自動的に処理しようとし、Cloudflare Pages と互換性のない Node.js ランタイムサーバーレス関数 を作成します。

この動作を無効にするには、dynamicParamsfalse に設定します:

export const dynamicParams = false
// ...

トップレベル getRequestContext

ルートを処理する関数内で getRequestContext を呼び出す必要があります — グローバルスコープでは呼び出せません。

これを行わないでください:

import { getRequestContext } from '@cloudflare/next-on-pages'
export const runtime = 'edge'
const myVariable = getRequestContext().env.MY_VARIABLE
export async function GET(request) {
return new Response(myVariable)
}

代わりに、これを行ってください:

import { getRequestContext } from '@cloudflare/next-on-pages'
export const runtime = 'edge'
export async function GET(request) {
const myVariable = getRequestContext().env.MY_VARIABLE
return new Response(myVariable)
}

ページルーター

getStaticPaths

/pages ディレクトリ静的サイト生成 (SSG) を使用し、さらに getStaticPaths 関数を使用する場合、Next.js はデフォルトで非静的生成ルートのリクエストを自動的に処理しようとし、Cloudflare Pages と互換性のない Node.js ランタイムサーバーレス関数 を作成します。

この動作を無効にするには、false fallback を指定します:

// ...
export async function getStaticPaths() {
// ...
return {
paths,
fallback: false,
}
}