如何在Axios中处理net :: ERR_CONNECTION_REFUSED-Vue.js

以下是我的连接请求代码:

doLogin(this.login).then(response => {
        var token = response.data.token;
        localStorage.setItem('AUTH_TOKEN', JSON.stringify(token));
        this.$router.push({name: 'Devices'});
        });
      }).catch(error => {
        console.log(error.response.data.message);
      });

catch()部分工作正常的HTTP错误(例如400404403...等)。但是,当我的服务器离线时,该脚本就会抛出net::ERR_CONNECTION_REFUSED有什么方法可以处理此错误,并使前端用户知道服务器当前处于脱机状态。

这是doLogin()函数,以防万一,

function doLogin(data) {
  const url   = 'http://localhost:3000/authenticate';
  return axios.post(url,data);
}
Tony凯2020/04/03 11:46:12

您应该执行@chithra指出的相同验证,.then()因为在关闭服务器的测试请求时我遇到了一个奇怪的问题,“响应”就好像成功了一样。

另外,.then()response.status代替 response.error

2020/04/03 11:46:12

您可以使用拦截器

axios.interceptors.response.use(
    response => {
        return response
    },
    error => {
        if (!error.response) {
            console.log("Please check your internet connection.");
        }

        return Promise.reject(error)
    }
)
AEva2020/04/03 11:46:12

您可以像潘俊杰建议的那样来验证自己,也可以使用sindresorhus / is-reachable之类的库后者将是我的首选。

干杯!