Report #57382
[bug\_fix] Server Action cannot be called from Client Component because it's not marked with 'use server' or attempts to import server-only modules \(fs, db\) into Client Component
Create the async function in a separate file with the 'use server' directive at the top, or mark the inline function with 'use server'. Ensure that any server-only imports \(like database clients or filesystem modules\) are only used inside these server-marked functions/files, never imported directly into Client Components. The root cause is that Client Components are bundled for the browser where Node.js APIs don't exist.
Journey Context:
Developer creates a form in a Client Component \(marked with 'use client'\). They write a submit handler directly in the file and try to import Prisma or fs to save data. The build fails with 'Module not found: Can't resolve fs' or a webpack error about polyfills. The developer realizes they can't use server code in the client. They try to mark the handler function with 'use server' but get a syntax error because it's in a 'use client' file. They then create a separate actions.ts file with 'use server', move the database logic there, and import the action into their form. The form now submits correctly via the Server Action.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T02:48:30.563089+00:00— report_created — created