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

React项目调用TfL API遇GraphQL语法错误,求问题排查

问题分析与解决方案

错误根源

你的语法错误完全来自类型定义(Type Defs)里的Query类型声明。GraphQL规范明确要求,type Query作为根查询类型,不能直接在后面跟($arrival: String!)这种变量定义,这是不符合语法规则的,这就是抛出Unexpected "("错误的直接原因。

正确的逻辑是:根查询类型的字段(比如getArrivals)需要单独定义参数,而非在type Query级别添加变量。

修正后的类型定义

把你的typeDefs修改为以下形式,移除type Query后的变量声明,将参数移到getArrivals字段上:

const typeDefs = `
  type Station {
    id: String!
    stationName: String
    lineId: String
    lineName: String
    platformName: String
    direction: String
    timestamp: String
    timeToStation: Int
    currentLocation: String
    towards: String
    expectedArrival: String
    modeName: String
  }
  
  type Query {
    getArrivals(id: String!): [Station]
    station: [Station]
  }
`;

关于“之前能运行”的解释

大概率是之前的代码没有这个语法错误,或者服务缓存了旧的类型定义。一旦重启服务、刷新缓存,GraphQL的语法校验就会触发,暴露这个不符合规范的写法。

查询语句无需修改

你的GET_ALL_ARRIVALS查询语句是完全正确的,它正确定义了查询变量$id并传递给getArrivals字段,不需要做任何调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:39:25