Back to Next Js

Request-time API was called outside request

errors/next-dynamic-api-wrong-context.mdx

16.2.51.6 KB
Original Source

Why This Error Occurred

A Request-time API was called outside a request scope. (Eg.: Global scope).

Note that Request-time APIs could have been called deep inside other modules/functions (eg.: third-party libraries) that are not immediately visible.

Possible Ways to Fix It

Make sure that all Request-time API calls happen in a request scope.

Example:

diff
import { cookies } from 'next/headers'

- const cookieStore = await cookies()
export default async function Page() {
+ const cookieStore = await cookies()
  return ...
}
diff
import { headers } from 'next/headers'

- const headersList = await headers()
export async function GET() {
+ const headersList = await headers()
  return ...
}

generateStaticParams

Request-time APIs like headers(), cookies(), connection(), and draftMode() are not available inside generateStaticParams because it runs at build time to determine which pages to statically generate. There is no HTTP request in this context.

Note: Root param getters (import { lang } from 'next/root-params') are supported inside generateStaticParams for nested segments, as the parent params are known at that point.