无法在服务器操作中设置cookie Next js 13.4

flseospp  于 2023-08-04  发布在  其他
关注(0)|答案(1)|浏览(117)

我试图设置一个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);

n1bvdmb6

n1bvdmb61#

唯一对我有效的解决方法是调用useEffect内部的服务器函数,如下所示:

useEffect(() => {
    setCookie("newId").then();
}, []);

字符串
这是nextjs中的bug,你可以在这里跟踪这个bug:https://github.com/vercel/next.js/issues/51875

相关问题