mirror of
https://github.com/vercel/next.js.git
synced 2026-09-20 02:25:18 +08:00
c2b4c0815c
This PRs unifies the caching story across the docs, making Cache Components the happy path, while still providing guidance to users in the old model. However, instead of explaining the old model and its caching layers, we've created a new guide focusing on what APIs to use and when. This follow-up PR aligns terminology across the docs: https://github.com/vercel/next.js/pull/90589 ## IA updates Getting Started section: - Improves Getting Started progression: - **Before:** CC → Fetching Data → Updating Data → Caching and Revalidating (old and new model mixed) - **After:** Fetching Data (Dynamic) → Mutating Data (Dynamic) → Caching with CC (Prerendering) → Revalidating with CC. - New: `caching.mdx` (CC-first) - Structure: - Enabling Cache Components - Data vs UI-level caching - Working with request time APIs - Passing request values to cached functions - Working with non-deterministic operations - Working with synchronous operations - How rendering works (PPR and static shell story) - New: `revalidating.mdx` (CC-first) - Explains how to use `cacheLife` and `cacheTag` Guides Section: - New: `caching-and-revalidating.mdx` (Previous Model) - For users who are not using CC, includes `fetch` options and route segment config - Moves route segment config options that don't apply to CC from API reference to this guide (for easy archiving in the future). - New: `migrating-to-cache-components.mdx` (WIP) - Del: `caching.mdx` 😌 ## Terminology We should remove caching layers from the docs. Users only needed to be exposed to them when they were configured independently, but the new CC APIs work across layers. To make it easier to review this PR, I'm consolidating terminology and fixing broken links in a new PR: https://github.com/vercel/next.js/pull/90589 --------- Co-authored-by: Vercel <vercel[bot]@users.noreply.github.com> Co-authored-by: Joseph <joseph.chamochumbi@vercel.com>
44 lines
1.3 KiB
Plaintext
44 lines
1.3 KiB
Plaintext
---
|
|
title: 'Invalid "use server" Value'
|
|
---
|
|
|
|
## Why This Error Occurred
|
|
|
|
This error occurs when a `"use server"` file exports a value that is not an async function. It might happen when you unintentionally export something like a configuration object, an arbitrary value, or missed the `async` keyword in the exported function declaration.
|
|
|
|
These functions are required to be defined as async, because `"use server"` marks them as [Server Actions](/docs/app/getting-started/mutating-data) and they can be invoked directly from the client through a network request.
|
|
|
|
Examples of incorrect code:
|
|
|
|
```js
|
|
'use server'
|
|
|
|
// ❌ This is incorrect: only async functions are allowed.
|
|
export const value = 1
|
|
|
|
// ❌ This is incorrect: missed the `async` keyword.
|
|
export function getServerData() {
|
|
return '...'
|
|
}
|
|
```
|
|
|
|
Correct code:
|
|
|
|
```js
|
|
'use server'
|
|
|
|
// ✅ This is correct: an async function is exported.
|
|
export async function getServerData() {
|
|
return '...'
|
|
}
|
|
```
|
|
|
|
## Possible Ways to Fix It
|
|
|
|
Check all exported values in the `"use server"` file (including `export *`) and make sure that they are all defined as async functions.
|
|
|
|
## Useful Links
|
|
|
|
- [Server Actions and Mutations - Next.js](/docs/app/getting-started/mutating-data)
|
|
- ['use server' directive - React](https://react.dev/reference/react/use-server)
|