mirror of
https://github.com/vercel/next.js.git
synced 2026-09-20 02:25:18 +08:00
22fc63da72
This PR cleans up small documentation and error-page issues: correct TypeScript spelling where it was written as “Typescript”, use the proper GitHub label in links, fix the MDN URL for `Map.prototype.values` in the middleware upgrade guide. No runtime or API behavior changes.
42 lines
1.6 KiB
Plaintext
42 lines
1.6 KiB
Plaintext
---
|
|
title: Cannot access Request information synchronously in route.js without awaiting connection first
|
|
---
|
|
|
|
## Why This Error Occurred
|
|
|
|
When `cacheComponents` is enabled Next.js treats most access to Request information as explicitly dynamic. However routes have a Request object and you can read values like the current pathname from that object synchronously. If you need to access Request information in a route handler you should first call `await connection()` to inform Next.js that everything after this point is explicitly dynamic.
|
|
|
|
This is only needed in `GET` handlers because `GET` is the only handler Next.js will attempt to prerender.
|
|
|
|
## Possible Ways to Fix It
|
|
|
|
Look for access of the Request object in your route.js and add `await connection()` before you access any properties of the Request.
|
|
|
|
Before:
|
|
|
|
```jsx filename="app/.../route.js"
|
|
export default function GET(request) {
|
|
const requestHeaders = request.headers
|
|
return ...
|
|
}
|
|
```
|
|
|
|
After:
|
|
|
|
```jsx filename="app/.../route.js"
|
|
import { connection } from 'next/server'
|
|
|
|
export default async function GET(request) {
|
|
await connection()
|
|
const requestHeaders = request.headers
|
|
return ...
|
|
}
|
|
```
|
|
|
|
It is unexpected that you would run the codemod and not successfully convert all instances of `params` and `searchParams` to async or have a marker string to help you locate unconverted cases. If you do find yourself in this situation please report this to [Next.js on GitHub](https://github.com/vercel/next.js/issues).
|
|
|
|
## Useful Links
|
|
|
|
- [`connection` function](/docs/app/api-reference/functions/connection)
|
|
- [`route.js` file convention](/docs/app/api-reference/file-conventions/route)
|