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

Apollo订阅查询Error无extensions字段,回调未返回完整错误详情

解决Apollo Subscription错误缺少extensions字段的问题

排查与修复方案

  • 升级Apollo Client版本:部分旧版Apollo Client存在Subscription错误字段丢失的bug,升级到@apollo/client@3.8+这类稳定新版本,通常能直接解决问题。
  • 自定义Error Link拦截处理:如果升级无效,通过自定义链路拦截响应,手动保留extensions字段:
    import { ApolloLink } from '@apollo/client';
    
    const errorLink = new ApolloLink((operation, forward) => {
      return forward(operation).map(response => {
        if (response.errors) {
          response.errors = response.errors.map(error => ({
            ...error,
            extensions: error.extensions || {}
          }));
        }
        return response;
      });
    });
    
    // 把errorLink加入Apollo Client的链路链
    const client = new ApolloClient({
      link: ApolloLink.from([errorLink, /* 其他链路 */]),
      cache: new InMemoryCache()
    });
    
  • 验证服务器端响应结构:确认WebSocket返回的帧数据中,errors数组确实包含完整的extensions字段(虽然网络面板显示完整,但可再核对WebSocket帧的原始内容)。
  • 调整订阅回调的错误读取逻辑:在onError回调中直接读取原始错误对象的extensions属性,避免依赖框架简化后的错误结构:
    client.subscribe({ query: MY_SUBSCRIPTION })
      .subscribe({
        next: data => console.log(data),
        error: err => {
          const errorCode = err?.extensions?.code;
          const errorType = err?.extensions?.type;
          // 处理错误详情
        }
      });
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 03:52:09