“无法读取未定义的属性'id'”错误

时间:2020-05-15 13:31:31

标签: node.js reactjs

export const isAuthenticated = () =>

 { if (typeof window == 'undefined') {

 return false; }

 if (localStorage.getItem('jwt')) {

 return JSON.parse(localStorage.getItem('jwt')); } 

else { return false; } 
};

screenshot

我在前端使用React JS,在后端使用Node JS。这是关于后端的错误吗?

2 个答案:

答案 0 :(得分:1)

这是因为它无法在_id对象中找到user。因此,您可以这样做以确保已经有user个对象

<Link
      to={`users/${isAuthenticated().user && isAuthenticated().user._id}`}
    >

答案 1 :(得分:-1)

为什么要调用isAuthenticated()。user._id,从我的代码中可以看到,isAuthenticated()返回的令牌不是user,而jwt令牌不包含_id属性。

我认为您要执行的操作或应该执行的操作是获取令牌,然后对其进行解码并获取有效负载,其中可能包含_id属性的用户对象。

您可以使用jwt-decode包对令牌进行解码

export const isAuthenticated = () =>

 { if (typeof window == 'undefined') {

 return false; }

 if (localStorage.getItem('jwt')) {

 const token = JSON.parse(localStorage.getItem('jwt')); 
 
   const decoded: any = decode(token);
   return decoded.user._id
 }


else { return false; } 
};