Javascript TypeError:无法读取未定义错误的属性“\u id”

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

我目前正在开发一个博客应用程序。我在前端使用react js,在后端使用node js。我有一个经过身份验证的方法

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,因为我也在使用该方法的几个部分