You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关闭MongoDB数据库后请求返回0 Unknown Error而非404的问题咨询

关闭MongoDB数据库后请求返回0 Unknown Error而非404的问题咨询

嘿,我来帮你理清这个问题的来龙去脉,以及怎么解决它!

为什么会出现status 0而不是预期的404?

这本质上是网络连接失败和HTTP层错误的核心区别:

  • 当你关掉MongoDB服务后,端口3000完全没有程序在监听请求。浏览器发起请求时,连最基础的TCP连接都建立不起来(对方完全不响应连接请求),这种情况根本不属于HTTP协议的范畴——HTTP状态码(比如404)是建立在TCP连接成功、服务器能正常返回HTTP响应的基础上的。
  • 浏览器遇到这类「无法获取有效HTTP响应」的场景时,会统一用status 0来标识,这类情况包括:连接超时、目标端口无服务监听、DNS解析失败等。你这里的问题和CORS配置无关(毕竟服务正常运行时CORS完全没问题),只是浏览器把这类无响应的情况归到了status 0的错误类别里。

为什么改端口到4200会得到404?

因为你的前端服务正运行在4200端口,浏览器发起请求时能成功建立TCP连接。前端开发服务器接收到请求后,发现没有对应的路由,于是返回了标准的404 HTTP响应——这时候属于正常的HTTP层错误,浏览器能正确获取到状态码。

怎么处理这个问题,让错误提示更准确?

你可以在modifyAndRethrow方法里针对status 0做特殊判断,把它映射成符合你场景的错误信息,比如:

private modifyAndRethrow(): (response: HttpErrorResponse) => ObservableInput<any> {
  return (response: HttpErrorResponse) => {
    const errorMsg = response.status === 0 
      ? "数据库服务未启动,请检查服务状态" 
      : (response.error?.code as string || `${response.status}`);
    throw errorMsg;
  };
}

这样一来,当你关掉MongoDB测试错误处理时,UI就会显示更准确的提示,而不是模糊的「Unknown Error」了。

备注:内容来源于stack exchange,提问作者Otto Abnormalverbraucher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 07:44:54