“Promise<KindeUser | null>”类型上不存在属性“email”

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

我正在使用“@kinde-oss/kinde-auth-nextjs/server”进行身份验证,与 PDF 文档项目进行聊天。在尝试从通过“getKindeServerSession().getUser()”获取的用户对象访问“email”属性时,我遇到了错误“Promise”类型上不存在属性“email”。

这是出现问题的代码片段:

**typescript:**
import { getKindeServerSession } from '@kinde-oss/kinde-auth-nextjs/server';
import { redirect } from 'next/navigation';
import React from 'react';

const Page = async () => {
    const { getUser } = getKindeServerSession();
    const user = getUser();

    if (!user || !user.id) redirect('/auth-callback?origin=dashboard');

    // Now trying to display the email but encountering the error
    return (
        <div>
            {user.email}
        </div>
    );
};

export default Page;

我尝试使用代码片段访问从 Kinde 获取的用户的电子邮件属性:

import { getKindeServerSession } from '@kinde-oss/kinde-auth-nextjs/server'
import { redirect } from 'next/navigation'
import React from 'react'

const Page = async () => {
    const { getUser } = getKindeServerSession()
    const user = getUser()

    if (!user || !user.id) redirect('/auth-callback?origin=dashboard')

    // Attempting to display the email but encountering the error
    return (
        <div>
            {user.email}
        </div>
    )
}

export default Page

javascript reactjs typescript authentication next.js
1个回答
0
投票

getUser
似乎返回了一个用户,因此您需要
await
它,并将其移动到 à
useEffect

const [user, setUser] = useState();
useEffect(() => {
  (async () => {
     const { getUser } = getKindeServerSession()
     const user = await getUser()

     if (!user || !user.id) {
       redirect(...);
       return;
     }
     setUser(user);
   })()
}, [])
© www.soinside.com 2019 - 2024. All rights reserved.