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

使用Gatsby启动服务器报错:无法查询ProductMarkdown的category字段

解决Gatsby中GraphQL报错:Cannot query field "category" on type "ProductMarkdown"

嘿,这个问题我之前在Gatsby项目里也踩过坑,咱们一步步来排查和解决:

1. 确认ProductMarkdown类型的字段定义

首先得检查你在gatsby-node.js或者类型定义文件里,有没有给ProductMarkdown类型声明category字段。很多时候是类型定义漏加了字段,或者字段名拼写/大小写不匹配。

比如在gatsby-node.js的createTypes里,应该这样定义:

exports.createTypes = ({ actions }) => {
  const { createTypes } = actions;
  const typeDefs = `
    type ProductMarkdown implements Node {
      category: String! # 确保这里存在该字段,类型和需求匹配
    }
  `;
  createTypes(typeDefs);
};

2. 检查Markdown文件的Frontmatter

所有属于ProductMarkdown的Markdown文件,必须在文件开头的Frontmatter里包含category字段,否则Gatsby的GraphQL系统识别不到这个字段:

---
title: "Adjustable Weight Set"
category: "Home Gym" # 这个字段必须存在,否则类型里不会生成category
---

这里是产品的详细描述...

3. 清理Gatsby缓存并重启服务

Gatsby的缓存机制有时候会导致类型变更没有生效,这时候需要强制清理缓存再重新启动:

gatsby clean && gatsby develop

这个操作会删掉.cache和public文件夹,让Gatsby重新构建所有类型和数据。

4. 检查GraphQL查询语句的拼写

最后确认你的查询语句里,字段名和类型定义完全一致(包括大小写)。比如不要把category写成Category:
❌ 错误示例:

query ProductList {
  allProductMarkdown {
    nodes {
      title
      Category # 这里大小写错误!
    }
  }
}

✅ 正确示例:

query ProductList {
  allProductMarkdown {
    nodes {
      title
      category # 和类型定义的字段名完全一致
    }
  }
}

按照这几个步骤排查,应该能解决这个字段不存在的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:38:25