如何提交一个好的错误报告

一个好的错误报告是我们能够快速修复问题的最大因素——无论是我们团队中的人还是我们用来分类的AI工具。多花五分钟写作可以将“无法工作”变成我们可以在一个会话中处理的内容。

此页面是规范的检查清单。相同的清单在我们的Discord #ask-for-help频道中作为帖子指南强制执行,并作为我们的GitHub错误报告模板中的字段。

检查清单

当您提交TinaCMS错误时,请包括以下所有相关内容:

1. 精确的错误信息

复制粘贴它,不要意译。我们搜索的是精确的字符串,AI代理也是基于模式匹配的。报告中说“React错误”比说“React错误#31:对象不能作为React子元素”要难以处理得多。

2. 重现步骤

您点击的顺序。即使是编号的文本列表也足够了——您不需要视频。

❌ 图示:不好的例子 - 模糊的描述我们无法处理

✅ 图示:好的例子 - 编号的逐步点击序列

3. 预期与实际行为

每个用一句话即可。告诉我们您是遇到了错误还是误解。

预期: 选定的图像被插入到字段中并且src字符串被保存。

实际: TinaCMS管理变为空白/白屏。控制台显示React错误#31

4. 您的环境 - 包括任何非默认设置

这是大多数人忘记的,也是最常直接指向根本原因的。包括:

  • tinacms@tinacms/cli的版本
  • 框架(Next.js, Astro, Remix等)
  • TinaCloud或自托管
  • 任何非默认设置 - 自定义MediaStore,自定义认证,自定义适配器,自托管设置等。

5. 我们可以重现的方法

一个我们可以克隆和运行的最小重现仓库是黄金标准。如果您需要一个骨架,npx create-tina-app@latest是一个好的起点。

针对TinaCMS特定问题

如果您的问题涉及到schema或TinaCloud,还请包括:

  • schema文件的相关部分(您不必粘贴整个文件)
  • 客户端ID - 针对任何与TinaCloud相关的问题

一个真实的例子

问题#6679 - 从媒体库插入图像时使用自定义MediaStore出现React错误#31是一个好的报告在实践中的样子。它包括:

  • 精确的错误字符串(“React错误#31:对象不能作为React子元素”)
  • 重现步骤的编号列表
  • 被传递的数据的形状(对象具有键{id, src, filename, directory, type, thumbnails}
  • 环境,包括自定义的GitHub支持的MediaStore适配器
  • 对根本原因的猜测

该报告在一个会话中被调查、修复、测试并合并,因为检查清单的每一部分都在其中。对于一个模糊的“图像损坏”报告,它可能会被搁置。

提交地点

  • Discord - TinaCMS Discord服务器中的#ask-for-help。最适合“这是一个错误还是我做错了什么?”的问题,以及社区帮助。
  • GitHub问题 - tinacms/tinacms/issues用于确认的错误。我们的GitHub问题模板会提示您使用与此页面相同的检查清单。

为什么这有效

格式不是随意的。每个项目都映射到人类或AI代理在调查时所做的事情:

项目

为什么重要

精确错误

搜索目标 - 在几秒钟内指向正确的文件和行

重现步骤

告诉我们何时代码路径被采用

环境 + 自定义适配器

“对我有效但对他们无效”的最大来源 - 指出要测试的变量

重现仓库

消除了“我们认为我们已经修复了”和“我们实际上已经为您修复了”之间的差距

您写作的五分钟节省了数小时的来回,并让我们使用的代理分类您的报告,而不是等待它。

Last Edited: June 4, 2026