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

NextJS中Sentry captureException无法展示完整错误信息如何解决?

解决Sentry捕获Axios网络错误时缺失完整CORS信息的问题

原因分析

浏览器出于安全限制,会隐藏跨域请求的详细错误信息(比如完整的CORS提示),仅向JavaScript层暴露通用的"Network Error",导致Axios和Sentry无法直接获取控制台显示的完整报错内容。

解决方案

1. 手动补充错误上下文

在catch块中针对Axios网络错误,结合请求的URL、当前页面Origin等信息,手动构造包含CORS相关提示的增强错误对象,再提交给Sentry:

try {
  await axios.get('https://www.hello.com/');
} catch (error) {
  if (error instanceof AxiosError && error.code === 'ERR_NETWORK') {
    const enhancedError = new Error(
      `Network Error: 疑似CORS拦截 - 来源域名: ${window.location.origin}, 请求URL: ${error.config.url}`
    );
    // 保留原始错误的栈信息与属性
    enhancedError.stack = error.stack;
    Object.assign(enhancedError, error);
    Sentry.captureException(enhancedError);
  } else {
    Sentry.captureException(error);
  }
}

2. 用Axios拦截器统一增强错误

在Axios实例的响应拦截器中提前处理网络错误,统一补充CORS相关提示,避免在业务代码中重复编写逻辑:

const axiosInstance = axios.create();

axiosInstance.interceptors.response.use(
  response => response,
  error => {
    if (error instanceof AxiosError && error.code === 'ERR_NETWORK') {
      error.message = `Network Error: 可能存在CORS问题 - 来源: ${window.location.origin}, 请求目标: ${error.config.url}`;
    }
    return Promise.reject(error);
  }
);

后续业务代码中使用该实例发起请求,捕获到的错误已包含补充信息,直接传入captureException即可。

3. 查看Sentry事件的请求元数据

Sentry会自动收集请求的相关元数据,你可以在事件详情的Request标签下查看请求URL、Origin头信息,辅助判断CORS问题。

4. 开发环境开启Sentry调试模式

在NextJS的Sentry配置中启用调试模式,可查看错误捕获的详细流程,确认是否有信息被过滤:

// next.config.js
module.exports = {
  sentry: {
    debug: process.env.NODE_ENV === 'development',
  },
};

内容的提问来源于stack exchange,提问作者strangeQuirks

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 13:15:21