开发者问题收集

Next.js-无法读取未定义的属性(读取“用户”)

2023-02-16
837

我在我的项目中使用 Next.js 和 Next-auth。

我正在构建一个侧边栏组件,我想在其中显示来自用户的项目列表。

因此,我使用 useSession 获取会话。

当我像这样记录会话时...

export default function Sidebar() {
  const { data: session, status } = useSession();

  console.log(session);

  return (
    ...
  )
}

...我得到了一个包含用户对象的对象。

但是当我尝试像这样记录用户时...

export default function Sidebar() {
  const { data: session, status } = useSession();

  console.log(session.user);

  return (
    ...
  )
}

我收到此错误:

TypeError: Cannot read properties of undefined (reading 'user')

知道这里的问题是什么吗?

非常感谢, Gabriel

2个回答

由于 useSession 是一个钩子,它将异步提供数据。因此,您需要在记录/使用会话之前检查会话是否未定义。

console.log(session?.user);

if(session) {
  console.log(session.user);
}
Rameez
2023-02-16

问题可能出在对象的解构上。 建议您检查它是否不为空,就像 Rameez 所说的那样。 试试这个:

const { data, status } = useSession();

if(data.session.user){
    console.log(data.session.user);
}

return (
    ...
);
gdserafini
2023-02-16