我试图设置一个cookie的行动,它给了我一个错误:Cookie只能在服务器操作或路由处理程序中修改,但我在服务器操作中有它们。
路径为app/actions.ts
import { cookies } from "next/headers";
export async function getCookie() {
"use server";
const cookieStore = cookies();
const calenderId = cookieStore.get("calenderId")?.value;
return Promise.resolve(calenderId);
}
export async function setCookie(id: string) {
"use server";
cookies().set("calenderId", id);
}
字符串
我试着在服务器组件中这样做,但也没有工作。
下面是调用setCookies()的部分,它位于app/page.tsx中,是服务器组件
if (!calenderId) {
calender = await prisma.calendar.create({ data: {} });
await setCookie(calender.id);
型
1条答案
按热度按时间n1bvdmb61#
唯一对我有效的解决方法是调用
useEffect
内部的服务器函数,如下所示:字符串
这是nextjs中的bug,你可以在这里跟踪这个bug:https://github.com/vercel/next.js/issues/51875