应安装 graphql for vscode(prisma 维护),禁用已废弃的 graphql language service;需手动配置 graphql.config.yml,正确设置 schemapath 相对路径;js/ts 中须声明 gql 类型或配置插件以启用补全;问题排查优先查看 output 面板 graphql 日志。

只装 GraphQL for VSCode,别碰 GraphQL Language Service
VSCode 市场里叫“GraphQL”的插件有十几个,真正能用的只有 GraphQL for VSCode(Prisma 团队维护)。GraphQL Language Service 已废弃,和当前 VSCode(2026 年最新版)存在兼容问题:装了会导致 .graphql 文件无法高亮、字段无补全、悬停无类型提示,甚至 Language Server 启动失败却无任何报错。
安装后重启 VSCode,打开任意 .graphql 文件,观察右下角语言模式是否为 GraphQL;再把光标停在某个字段上,看是否有灰色下划线 + 悬停显示类型。没这些效果,大概率是插件冲突或配置未生效。
- 禁用所有其他 GraphQL 相关插件,尤其是名称含 “Language Service”、“Tools”、“Apollo GraphQL”(除非你明确需要 Apollo 官方集成)
- 确认插件作者是
Prisma或GraphQL Foundation,发布日期在 2025 年之后 - 如果已装错,卸载后务必重启 VSCode,否则缓存可能让旧行为残留
必须手动配 graphql.config.yml,schemaPath 路径极易写错
插件不会自动读取项目里的 schema.graphql,必须通过配置文件显式声明。推荐使用 graphql.config.yml(比 .graphqlrc 更稳定,YAML 解析规则更明确)。
schemaPath 是相对 graphql.config.yml 所在目录的路径,不是工作区根目录——这是最常踩的坑。比如 config 文件放在项目根目录,而 schema 在 src/graphql/schema.graphql,那就得写 ./src/graphql/schema.graphql,不能写 src/graphql/schema.graphql(缺 ./)或 ../src/graphql/schema.graphql(多了一级)。
- 支持数组写法,适合拆分 schema:
schema: ["./schema/types.graphql", "./schema/queries.graphql"] - Windows 用户别用反斜杠
\,YAML 会把它当转义符,统一用正斜杠/ - 远程 schema(如
https://localhost:4000/graphql)需确保服务已启动且允许Origin: file://,开发时容易因 CORS 返回 403,建议优先用本地文件
JS/TS 中用 gql 模板字符串,必须声明函数类型
插件默认只识别 gql`` 和 graphql`` 这两种字面量前缀。但实际项目中,绝大多数人是 import { gql } from '@apollo/client' 或 import { gql } from 'graphql-tag',此时 VSCode 根本不知道这个 gql 是 GraphQL 片段,补全和校验全部失效。
解决方法是在 TS 项目中全局声明:declare module '*/graphql-tag' { export const gql: any; },或者更稳妥地适配 Apollo Client v3+:
declare global {
namespace GraphQLTag {
function gql(strings: TemplateStringsArray, ...vars: any[]): any;
}
}
declare const gql: GraphQLTag.gql;
JS 项目则需在 jsconfig.json 中加插件支持:"plugins": [{ "name": "@graphql-tools/graphql-tag-pluck" }],否则 gql 字符串内完全不触发补全。
补全失效?先看 Output 面板里的 GraphQL 日志
Language Server 启动失败或加载 schema 出错时,VSCode 界面不会弹窗、不会报错,只会“静默失效”:字段没提示、Ctrl+Click 跳转灰掉、保存也不校验。这时候唯一可靠线索在 Output 面板(快捷键 Ctrl+Shift+U),下拉选 GraphQL。
常见错误信息包括:Cannot find schema at ./schema.graphql(路径错)、Failed to load schema from URL(CORS 或服务未启)、Schema is empty(文件为空或解析失败)。只要这里出现 ERROR 或 WARN,补全就不可能工作。
- 每次改完
graphql.config.yml或schema.graphql,记得手动执行命令GraphQL: Reload Schema(Cmd/Ctrl+Shift+P 输入) - 如果用的是
documents: ["src/**/*.ts"],确保你的gql字符串真正在匹配路径下,否则插件压根不会扫描它 - 补全依赖 schema 加载成功,而 schema 加载又依赖配置路径、网络、权限——链条长,任一环节断掉都会表现为“没提示”,别只盯着代码本身











