调用Kinde getUser获取用户后访问email属性遇类型错误
解决Kinde认证中getUser()返回Promise导致的类型错误
你遇到的错误核心原因是getUser()返回的是Promise对象而非直接的用户实例,未通过await处理就直接访问属性,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(); // 关键:用await等待Promise解析出实际用户对象 const user = await getUser(); if (!user || !user.id) redirect('/auth-callback?origin=dashboard'); return ( <div> {user.email} </div> ); }; export default Page;
关键修改点
- 在调用
getUser()时添加await关键字,等待异步操作完成,拿到真正的KindeUser | null实例 - 后续对
user.id和user.email的访问就能被TypeScript正确识别类型,不会再出现属性不存在的错误
Next.js的Server Components原生支持async/await语法,所以在异步页面组件中使用await是完全合规的写法。
内容的提问来源于stack exchange,提问作者K khan
相关产品推荐
相关产品推荐

