首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法在反应中处理net::ERR_CONNECTION_REFUSED

无法在反应中处理net::ERR_CONNECTION_REFUSED
EN

Stack Overflow用户
提问于 2022-07-08 09:16:15
回答 2查看 368关注 0票数 1

我正在尝试向http://localhost:5000/run发送一个帖子请求。如果服务器没有运行,则尝试向客户端抛出“请重试”。

代码语言:javascript
运行
复制
try{
    const {data} = await axios.post("http://localhost:5000/run",payload);
    setOutput(data.output);
}
catch ({ response }) {
  if (response) {
    const errMsg = response.data.err.stderr;
    setOutput(errMsg);
  } else {
    setOutput("Please retry submitting.");
  }
}

当服务器正在运行时,会收到正确的错误,但当服务器脱机时则不会收到错误。密码里遗漏了什么吗?

EN

回答 2

Stack Overflow用户

发布于 2022-07-08 09:32:18

请尝试以下代码:

代码语言:javascript
运行
复制
import axios from "axios";
import {AxiosError} from 'axios';

    axios
        .post("http://localhost:5000/run", payload)
        .then((response) => setOutput(response.data.output))
        .catch((error) => {
            if (!error?.response) {
                setOutput("No Server Response");
            } else if (error?.code === AxiosError.ERR_NETWORK) {
                setOutput("Network Error");
            } else if (error.response?.status === 404) {
                setOutput("404 - Not Found");
            } else if (error?.code) {
                setOutput("Code: " + error.code);
            } else {
                setOutput("Unknown Error");
            }
        });

您可以使用axios.isAxiosError(error)确保错误是AxiosError的类型。

Axios错误类型:

代码语言:javascript
运行
复制
static readonly ERR_FR_TOO_MANY_REDIRECTS = "ERR_FR_TOO_MANY_REDIRECTS";
static readonly ERR_BAD_OPTION_VALUE = "ERR_BAD_OPTION_VALUE";
static readonly ERR_BAD_OPTION = "ERR_BAD_OPTION";
static readonly ERR_NETWORK = "ERR_NETWORK";
static readonly ERR_DEPRECATED = "ERR_DEPRECATED";
static readonly ERR_BAD_RESPONSE = "ERR_BAD_RESPONSE";
static readonly ERR_BAD_REQUEST = "ERR_BAD_REQUEST";
static readonly ERR_CANCELED = "ERR_CANCELED";
static readonly ECONNABORTED = "ECONNABORTED";
static readonly ETIMEDOUT = "ETIMEDOUT";
票数 2
EN

Stack Overflow用户

发布于 2022-07-08 10:21:35

谢谢你的评论,这是一个解决方案,最终奏效了:

代码语言:javascript
运行
复制
try {
  const {data} = await axios.post("http://localhost:5000/run", payload);
  setOutput(data.output);
} catch (error) {
  if (error.response.data) {
    setOutput(error.response.data.err.stderr);
  } else {
    setOutput("Error connecting to the server!");
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72909225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档