不变:方法期望有 requestAsyncStorage,但没有可用的

Ash*_*ota 20 axios next.js next-auth

我正在尝试使用 prisma 客户端从 mongodb atlas 检索用户的数据,我编写此代码用于获取数据,它显示错误,这里 prisma 客户端代码写入作为 prisma 导入的 prismadb 文件中

import { NextApiRequest, NextApiResponse } from "next";
import prisma from "./prismadb";
import { getServerSession } from "next-auth";

const serverAuth = async (req: NextApiRequest, res: NextApiResponse) => {
    try {
        const session = await getServerSession(req);

        if (!session?.user?.email) {
            throw new Error('Not signed in');
        }

        const currentUser = await prisma.user.findUnique({
            where: {
                email: session.user.email,
            }
        });

        if (!currentUser) {
            throw new Error('Not signed in');
        }

        return { currentUser };
    } catch (error:any) {
        // res.status(500).json({ error: `&{err.message}` });
        res.status(500).json({ error: error.message });
        return;
    }
};

export default serverAuth;
Run Code Online (Sandbox Code Playgroud)

我已经尝试并捕获并显示了此错误。我在聊天 GPT 中询问过,它表明这可能是由于 next.js 和 next-auth 之间的一些错误造成的,并且该问题的官方 GitHub 帐户已关闭,但我不明白任何事情

以下是参考链接:

并在下一个身份验证 https://github.com/nextauthjs/next-auth/issues/6989

nin*_*sau 18

如果您在使用 next13 时遇到此错误,请确保您所在的文件getServerSession实际上是服务器文件。包含"use server"在页面顶部。

getServerSession必须在服务器组件中调用。

  • 这应该是公认的答案。 (4认同)

dbu*_*osp 6

在此线程中找到了解决方案

import { createServerComponentClient } from "@supabase/auth-helpers-nextjs";
import { Database } from "@/lib/types/schema";
import { cookies } from 'next/headers'
import { cache } from 'react';

export const createServerClient = cache(() => {
    const cookieStore = cookies()
    return createServerComponentClient<Database>({
        cookies: () => cookieStore
    })
})

export async function GET() {
    const supabase = createServerClient()

    const { data, error } = await supabase.from('').select('')

    return data
}
Run Code Online (Sandbox Code Playgroud)

让我知道这是否适合您。