Javascript TypeError:无法读取未定义错误的属性“\u id”
我目前正在开发一个博客应用程序。我在前端使用react js,在后端使用node js。我有一个经过身份验证的方法Javascript TypeError:无法读取未定义错误的属性“\u id”,javascript,node.js,reactjs,web,Javascript,Node.js,Reactjs,Web,我目前正在开发一个博客应用程序。我在前端使用react js,在后端使用node js。我有一个经过身份验证的方法 export const isAuthenticated = () => { if (typeof window == 'undefined') { return false; } if (localStorage.getItem('jwt')) { return JSON.parse(localStorage.getItem('jwt')); } e
export const isAuthenticated = () => {
if (typeof window == 'undefined') {
return false;
}
if (localStorage.getItem('jwt')) {
return JSON.parse(localStorage.getItem('jwt'));
}
else {
return false;
}};
我在这里用它
<li className="nav-item">
<Link
to={`/user/${isAuthenticated().user._id}`}
style={isActive(history, `/user/${isAuthenticated().user._id}`)}
className="nav-link"
>
{`${isAuthenticated().user.name}'s profile`}
</Link>
</li>
它给了我类型错误:无法读取中未定义的属性“\u id”
to={/user/${isAuthenticated.user.\u id}}此部分
请帮助我的库存我无法从后端获取_id,我想,但我可以在每次单击google chrome开发工具中的应用程序时使用jwt令牌您尝试从isAuthenticated函数获取具有用户属性的对象,但它只返回字符串或布尔值。您的函数不仅可以返回本地存储项,还可以返回错 所以像这样做适当的检查 我被认证了? {`${isAuthenticated.user.name}的配置文件`} : 登录
除非JSON只是一个字符串,否则JSON.parse不会返回字符串。在本例中,它很可能返回一个对象,但typescript不知道该对象的结构,它不是typescript。这只是TypeError,因为他试图从基元中获取属性。啊,对不起,你是对的。我现在太关注TS了。我应该键入什么来代替它呢?如果JWT令牌包含用户对象,您可以解码它。如果没有,则需要进行单独的API调用以获取用户对象。JWT只是一个框架,不会自动定义用户信息。默认情况下,它仅在与API交谈时用作某种密码替换。有没有办法更改我的isAuthenticated,因为我也在使用该方法的几个部分