You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js 15.1.6关闭JS时服务端调用cookies报请求域错误求助

Next.js 15服务端Action关闭JS时访问Cookies报错解决

使用Next.js 15.1.6版本,通过客户端组件的表单action属性调用服务端Action时,浏览器开启JavaScript功能正常,但关闭JavaScript后会抛出Error: cookies was called outside a request scope错误,无痕模式下关闭JS测试也会出现相同问题。

相关代码

testAction.ts

"use server";
import { cookies } from "next/headers";

export async function checkCookiesAction() {
  const cookieStore = await cookies();
  console.log(cookieStore.getAll());
}

page.tsx

"use client";
import { checkCookiesAction } from "./testAction";

export default function Page() {
  return (
    <form action={checkCookiesAction}>
      <button type="submit">Login</button>
    </form>
  );
}

问题原因及解决方法

问题出在服务端Action中错误地使用了await cookies()——Next.js从next/headers导入的cookies()是同步函数,不需要加await。开启JS时,客户端通过AJAX调用Action,上下文保留正常;但关闭JS后,表单提交是普通HTTP请求,await会导致函数执行脱离请求上下文,从而触发报错。

修改testAction.ts,移除await即可解决:

"use server";
import { cookies } from "next/headers";

export async function checkCookiesAction() {
  const cookieStore = cookies();
  console.log(cookieStore.getAll());
}

额外注意点:

  • 服务端Action的"use server";指令必须放在文件最顶部,不能有任何代码(包括导入语句)在它之前
  • 客户端组件导入服务端Action时,Next.js会自动处理为远程调用,无需额外配置

内容的提问来源于stack exchange,提问作者Dev-LaJu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 14:46:07