Javascript 来自API的响应未定义

Javascript 来自API的响应未定义,javascript,reactjs,axios,Javascript,Reactjs,Axios,因此,我尝试使用令牌创建一个身份验证系统。这是通过发送带有令牌的get请求来实现的,API应该返回信息。我遇到了一个错误,它是TypeError:cannotread属性'error'of undefined,错误指向这一行if(UserData.error==“Token not valid”){return false}。所以我猜这意味着API的响应没有被放入UserData。API工作正常,如果令牌正确,下面是响应: { "username": "ad

因此,我尝试使用令牌创建一个身份验证系统。这是通过发送带有令牌的get请求来实现的,API应该返回信息。我遇到了一个错误,它是
TypeError:cannotread属性'error'of undefined
,错误指向这一行
if(UserData.error==“Token not valid”){return false}
。所以我猜这意味着API的响应没有被放入
UserData
。API工作正常,如果令牌正确,下面是响应:

{
    "username": "admin",
    "is_staff": true,
    "email": "admin@gmail.com"
}
下面是令牌不正确时的响应

{
    "Error": "Token not valid"
}
这是我的密码:

function isAuthenticated() {
    const authtoken = localStorage.getItem('AuthToken')
    if (authtoken == null) {
        return false
    } else {
        let UserData;
        axios.get(`http://localhost:8000/api/token/?token=${authtoken}`).then(function(request) {
            UserData = request.data
        })
        if (UserData.Error == "Token not valid") {return false}
        else {return UserData}
    }
}

由于ajax请求将在js中以异步方式工作,因此我们可以使用
async await
进行同步调用

异步函数已验证(){
const authtoken=localStorage.getItem('authtoken')
if(authtoken==null){
返回错误
}否则{
让用户使用数据;
UserData=wait axios.get(`http://localhost:8000/api/token/?token=${authtoken}`)。然后(函数(请求){
返回请求.数据
})
if(UserData.Error==“令牌无效”){return false}
else{return UserData}
}
}
#在执行use WAIT时
userData=wait isAuthenticated()

这是否回答了您的问题?我不认为这是真的,如果(UserData.Error==“Token not valid”){return false}没有在它的正上方等待axios调用,那么
就不会。它会立即执行,这意味着当您到达该if时,
UserData
将永远不会被定义。您是否在fetch或
axios.get
上实现了类似于
catch
的错误处理?我想你应该在
之后放置
捕获
,然后
我尝试了那些解决方案,它们都不起作用,我无法理解大部分代码(我对React和JS还比较陌生)