Axios:如何访问被拒绝的承诺的响应对象?

i.b*_*rod 3 javascript http axios

我使用 NodeJS 和 Express 构建了一些登录系统。我的错误处理基于发送适当的 http 状态代码以及自定义错误消息。例如,不正确的登录将返回:

res.status(401).send({ error: 'Incorrect login' })
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我既设置了一个状态,该状态将导致承诺失败(至少对于 Axios),并发送我自己的错误。

在前端,这就是我所拥有的:

 try {
  var response =  await axios({
    method: 'post',
    url: 'http://localhost:3000/signin',
    data: {
      email: this.state.email,
      password: this.state.password
    },
    headers

  })
} catch (error) {
  console.log(response)
  return alert(error)
}
Run Code Online (Sandbox Code Playgroud)

由于 401 导致承诺被拒绝,我留下了这个内置错误:请求失败,状态代码为 401。

有没有办法仍然访问响应对象?我的想法是处理来自服务器的所有错误消息,将这项工作从前端夺走。

meh*_*mpt 6

用于error.response获取服务器的响应。为了揭示整个错误对象,请执行以下操作console.dir(error)

try {
  var { data } = await axios({
    method: 'post',
    url: 'http://localhost:3000/signin',
    data: {
      email: this.state.email,
      password: this.state.password
    },
    headers

  })
} catch (error) {
  console.dir(error) // error.response contains your response
}
Run Code Online (Sandbox Code Playgroud)