VSCode 的 GraphQL Schema 实时校验需使用 Prisma Labs 出品的 GraphQL for VSCode 插件,其他插件如 Apollo 官方扩展已多年未维护;校验失败主因是 graphql.config.yml 路径配置错误、未彻底重启 VSCode、.graphql 文件未绑定语言模式、schema 文件非合法 SDL 格式或 Language Server 未正确加载。

VSCode 能做 GraphQL Schema 实时校验,但必须用 GraphQL for VSCode(Prisma Labs 出品),其他插件如 Apollo 官方扩展已多年未维护,装了反而卡在 GraphQL: disconnected 状态。
为什么 schema 校验总失败?关键在配置文件路径和重启方式
插件加载 schema 的前提是 graphql.config.yml(或 graphql.config.js)存在且路径正确——它不读项目根目录,而是以该配置文件所在位置为基准解析 schema 字段。
-
schema: ./schema.graphql和schema: schema.graphql等价,但若配置文件在config/graphql.config.yml,就得写../schema.graphql - Windows 用户必须用正斜杠:
schema: schema/schema.graphql,schema\schema.graphql是非法 YAML - 多文件 schema 必须写成数组:
schema: ["schema/types.graphql", "schema/queries.graphql"] - 装完插件后必须彻底关闭所有 VSCode 窗口再重开,
Developer: Reload Window不触发 Language Server 启动
本地 schema 文件怎么生成又保持同步?
靠 Node.js 脚本 + graphql-introspection 或服务端 GET /graphql?query={__schema{...}} 导出 SDL,不能直接拿 introspection JSON 当 .graphql 用——插件只认合法 SDL 格式(即带 type Query { ... } 的纯文本)。
诊断并恢复通过 SSH 隧道连接的 OpenClaw 节点。用于解决配对必需错误、隧道冲突、远程端点错误以及 SSH 目标配置错误等问题。
- 推荐用
npm run graphql:download调用graphql-cli或自写脚本,输出到schema.graphql - Keystone、Nexus、Apollo Server 等框架启动后,可 curl
http://localhost:4000/graphql?query={__schema{types{name}}}+jq提取 SDL - 每次修改后手动运行脚本,或监听
src/**/*.{ts,js}自动触发(注意避免循环写入)
为什么 .graphql 文件右下角显示 Plain Text?
VSCode 默认不把 .graphql 或 .gql 当 GraphQL 处理,必须手动绑定语言模式。
- 打开
settings.json,加这段:
"files.associations": {
"*.graphql": "graphql",
"*.gql": "graphql",
"schema.graphql": "graphql"
}
.graphql 文件,右下角应显示 GraphQL: connected
GraphQL 没冒号和 connected,去 Output 面板选 GraphQL 查日志,常见报错是 Unable to load schema from ./schema.graphql —— 路径错或文件为空schema 更新了但补全没变?别信缓存
插件不会自动监听 schema.graphql 变更,改完文件后需手动触发重载:按 Ctrl+Shift+P → 输入 GraphQL: Restart Language Server,或者关掉再重开文件。
- 某些场景下(如 WSL2 + Remote),
chokidar监听失效,可临时加fileChangeDelayMs: 1000到服务配置里 - 如果用了远程 endpoint(
schema: http://...),确保服务返回 200 且响应头含Content-Type: application/json,否则插件静默失败 - IntelliSense 补全字段名但跳转定义失效?检查
documents字段是否覆盖了你的查询文件路径,比如documents: "src/**/*.graphql"
最常被忽略的是:schema 加载成功与否,只看 Output → GraphQL 面板日志,而不是有没有语法高亮——高亮只是前端渲染,校验靠 Language Server。一旦看到 Loaded schema from ... 才算真正连上了。

















