为什么我不能从我的 session.user 中提取 id,nextjs 13 中的服务器端

问题描述 投票:0回答:0

当一切设置正确时,我似乎无法从我的 session.user(next-auth) 中获取 id。这是我的一些代码。

/API/getId/index.ts 在下面的代码中,我试图通过 getServerSession 访问我的会话,实际上我确实完整地恢复了我的会话。但是,当我尝试在会话中访问 user.id 时,出现以下错误

属性 'id' 不存在于类型 '{ name?: string |空 |不明确的;电子邮件?:字符串|空 |不明确的;图片?:字符串 |空 |不明确的; }'.

import { NextApiRequest, NextApiResponse } from "next";
import { getServerSession } from "next-auth";
import { authOptions } from "../../auth/[...nextauth]";
import Prisma from '../../../../libs/prismadb'
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
    try{
        const session = await getServerSession(req, res, authOptions)
        console.log(session?.user.id, '1')
        if(session?.user){
            // const admin = await Prisma.owner.findUnique({
            //     where: {
            //         id: session?.user?.id
            //     }
            // })
            console.log(session, '2')
        }
        res.status(200).json({session})
    }catch(err: any){
        throw new Error(err)
    }
}

但它确实存在于那种类型

export interface DefaultSession {
  user?: {
    name?: string | null
    email?: string | null
    image?: string | null
    id?: string | null
  }
  expires: ISODateString
}

我尝试重新启动我的打字稿服务器,甚至重新启动 vscode,但似乎没有任何效果。即使当我尝试 console.log(session) 时,我也看到 id 确实存在于用户对象中。如果你知道哪里出了问题,请帮忙,因为这是我正在进行的一个大项目,我不能落后于它

session next.js next-auth serverside-javascript
© www.soinside.com 2019 - 2024. All rights reserved.