常见问题
1. 什么是 TinaCloud?
TinaCloud 是 TinaCMS 的一个托管 数据层。TinaCloud 是在生产环境中使用 TinaCMS 的最简单方式。它提供:
- 一个托管的内容 GraphQL 端点
- Git 集成
- 用户管理
- 编辑工作流 功能
它还允许不同类型的用户(内容创作者、编辑、市场人员等)进行授权登录和编辑他们的网站,而无需直接访问 GitHub 中的代码库。
TinaCMS 也可以 自托管 或独立于 TinaCloud 使用。
有关更多信息,请参阅 TinaCloud 概述。
2. 我在哪里可以获得 TinaCMS 或 TinaCloud 的帮助或分享想法?
请访问我们的社区 tina.io/community。
3. 我需要认证人员来使用 Tina 吗?
任何人都可以立即开始使用 Tina,但它是为开发人员设置和定制而设计的。认证开发人员 可以加速设置、微调配置,并确保最佳实践架构。
4. 支持哪些版本的 Node?
TinaCMS 支持所有活跃的 LTS 版本的 Node。请参阅 Node.js 版本 以了解更多关于发布版本的信息。
NPM、PNPM 和 Yarn 包管理器都被支持。
Node 版本 | |
|---|---|
v25.x | ℹ️ 不支持 - 当前但不是 LTS |
v24.x LTS | ✅ 支持 - 推荐用于生产 |
v23.x | ❌ 已终止支持 |
v22.x LTS | ✅ 支持 - 适合生产 |
v21.x | ❌ 已终止支持 |
v20.x LTS | ℹ️ 不支持 - 推荐更新 |
v19.x | ❌ 已终止支持 |
表格更新于 2026 年 2 月
5. Tina 的技术栈是什么?
TinaCloud
- 内容查询 + 索引 - Node
- 云提供商 - AWS
- 身份管理 - Go
TinaCMS
- CMS - React 18
6. 自托管 Tina 与 TinaCloud 相比有哪些不可用的功能?
在比较 TinaCloud 与自托管 Tina 时,有一些特定功能是 TinaCloud 独有的。这些包括:
1. Git 支持的媒体
在 TinaCloud 中,有一个 Git 支持的媒体功能。这将媒体集成到 Tina 媒体管理器中,并直接提交到 Git 存储库。然而,这一功能在自托管 Tina 中不存在。
其缺失的原因是由于涉及媒体上传的过程。当在 TinaCloud 中使用媒体管理器时,图像会上传到 TinaCloud 服务器并通过 CDN 分发。这确保了图像可以通过 Tina 媒体管理器访问,因为它们需要一个 URL 来访问。没有这个,图像在网站重建之前不会出现在媒体管理器中。
2. 运行时动态分支切换
TinaCloud 允许在运行时更改内容分支,这一功能通过 URL 修改来管理。然而,在自托管 Tina 中,分支更改仅限于构建阶段。
这意味着像这样的命令...
client.queries.page({ relativePath: 'home.mdx' }, { branch: 'main' })
...在自托管 Tina 设置中不起作用。
3. 搜索
自托管后端目前没有支持搜索功能的端点。
7. 如何在 Git 提交中启用共同作者?
默认情况下,当使用 TinaCloud 时,Git 提交的作者是 TinaCloud GitHub 应用。一些用户希望知道是谁进行了更改。
对于这种情况,Tina 提供了两种不同的方法:
- GitHub 授权以将操作归因于一个 GitHub 账户。
- 共同作者 Git 提交以将提交归因于额外的用户。
这两种方法都可以在 TinaCloud 账户设置中按用户启用。了解更多关于 Git 作者化的信息。
8. 使用 Markdown 时为什么需要数据库?
在使用 TinaCMS 的 Markdown 时,数据库是必需的,因为服务于 Markdown 和 JSON 文件的数据层依赖于数据库来执行各种内容管理功能。虽然 Markdown 文件是您内容的主要来源,但数据库充当缓存以启用高级功能,如搜索、分页和文件之间的交叉引用。它还提供了一个 API,允许内容获取类似于传统的无头 CMS 操作。
最初,TinaCMS 的数据层在本地开发期间不被注意,并由生产中的 TinaCloud 管理。随着自托管选项的引入,用户现在可以选择更多的控制和定制,集成自己的身份验证系统和托管。整个 TinaCMS,包括其数据层,都是开源的,允许社区驱动的增强和支持。
9. 什么是“本地模式”与“生产模式”?
本地模式
当开发人员在本地开发时,通常方便从他们的本地文件系统加载/保存内容,而不是连接到 TinaCloud 上的内容。
在本地模式下,您不需要登录即可进入编辑模式。
注意: 本地模式是为了本地开发而设计的,当您的网站托管在生产环境中时将不起作用。在本地模式下,Tina 尝试访问
http://localhost:4001,这在您的生产网站上运行时不可用(底层文件系统内容也不可用)。
生产模式
一旦您准备好在生产环境中托管您的网站并将编辑放在身份验证之后,您可以自行托管 CMS 后端,也可以使用 TinaCloud 的托管后端。
无论您是 自托管 Tina 还是使用 TinaCloud,Tina 的内容 API 直接与 GitHub 进行身份验证,无需用户创建 GitHub 账户。任何由您的编辑保存的更改都将提交到您 GitHub 仓库中配置的分支。
10. TinaCloud 仅适用于 GitHub 存储库吗?
目前是的,TinaCloud 集成的第一个 Git 提供商是 GitHub。未来可能会有其他 Git 提供商可用。
11. TinaCloud 支持 Monorepos 吗?
支持!TinaCloud 可以通过在项目配置中指定 tina 文件夹的路径来与 monorepos 内的网站一起工作。
如果您的存储库不是 monorepo,则无需进行任何配置。我们会期望您的 tina 文件夹位于存储库的根目录。
以下是一个与 TinaCloud 兼容的 monorepo 结构示例:
/projects/site-a/projects/site-b/projects/site-c
有关更多信息,请参阅 Path To Tina。
12. 为什么从网站登录时 Tina.io 登录窗口不会关闭?
当用户从您的网站登录时,我们会弹出一个登录窗口。登录完成后,我们将尝试将消息发送回主窗口。
此问题的最常见原因是:
- Tina 项目的站点 URL 设置不正确。主窗口的基本 URL 需要与 TinaCloud 仪表板中设置的 Tina 项目的站点 URL 匹配。
- 您网站环境变量中设置的客户端 ID 与 TinaCloud 仪表板中项目设置中的客户端 ID 不匹配。
- 尝试登录 TinaCloud 的用户无权编辑此站点。确保该用户在 TinaCloud 仪表板上获得授权。
站点在子路径上构建
已知限制是,当管理员部署到子路径时,TinaCMS 无法正确加载资产:(例如 https://jamespohalloran.github.io/my-site-root/admin/)。要解决此问题,请在您的 Tina 配置文件 中,将 build.basePath 属性设置为子路径的值(例如 my-site-root)。
13. 如何解决“加载 TinaCMS 资产失败”错误?
此错误意味着 TinaCMS 管理 HTML 文件未能加载 JavaScript 包。通常有几个原因:
用户将开发的 admin/index.html 推送到生产环境
当您在本地运行 tinacms dev 时,Tina 会生成一个开发的 admin/index.html 文件,该文件从 localhost 加载其资产。对于生产环境,此文件应在 CI 中使用 tinacms build 构建。如果开发人员手动从他们的 .gitignore 中删除 admin/index.html 文件,他们可能会遇到此问题。
您的站点在不同的基础路径上提供服务
如果您的站点在子目录中提供服务,请确保您的 build.basePath 配置适当
视频:常见问题 - 为 TinaCMS 设置基础路径(3 分钟)
14. 常见的 TinaCloud 错误有哪些?
有关更多信息,请参阅 TinaCloud 故障排除 页面。
15. 如何在本地 GraphQL 服务器未运行或在生产中访问它?
在生产中
确保您的 API URL 未设置为指向本地 GraphQL 服务器。您应该指向 ContentAPI。
在本地
如果您在本地工作,请确保您的 GraphQL 服务器正在运行。
16. Vercel 部署问题 - 部署入门模板时有哪些常见问题?
1. 弹出窗口阻止 Vercel 安装其 GitHub 应用
在选择要部署的入门模板并被重定向到 Vercel 后,可能无法打开 Vercel 添加其 GitHub 应用的弹出窗口。请查看左下角的提示消息,显示“无法打开安装 GitHub 应用的弹出窗口”。

图:弹出窗口被阻止
要修复此问题,请检查浏览器地址栏中的阻止弹出窗口,允许它们,然后重试。
17. Tina 是否支持 LLM?
是的。Tina 设计为高度支持 LLM,主要是因为它使用 Markdown 来结构化内容。
Markdown 为大型语言模型(LLM)提供了明显的优势:
- 清晰的结构——标题、列表和代码块更易于解析
- 语义意义——格式化增加了清晰度和上下文
- 友好的提示——一致的标记减少了歧义
- 人机可读——原始 Markdown 对两者都有效
- 与 LLM 趋势一致——Markdown 自然适应向 LLM 优化内容的转变,如 SEO 已死,LLMO 永存 中所述
18. 您支持 Git LFS 吗?
不幸的是,由于 GitHub API 的限制,我们目前不支持 Git LFS。
18. 加载引用字段时出现 503 服务不可用错误。
在具有大量项目的集合上使用引用字段时,您可能会发现网络请求超时。目前,我们没有任何机制来分页引用字段。
替代方法是添加一个带有分页的 自定义字段组件。要检索分页结果,您可以使用 自定义查询。
视频:常见问题 - 加载引用字段时出现 503 服务不可用错误
19. 我需要 GitHub 账户来编辑吗?
作为临时解决方案,可以从 TinaCloud 仪表板 手动重新索引由 GitHub Copilot 创建的分支。
编辑者可以仅使用他们的电子邮件创建一个 TinaCloud 账户。如果为编辑者启用了共同作者功能,则提交将由他们的电子邮件地址共同作者。
20. GitHub Copilot 分支未被 TinaCloud 索引
由于 GitHub Copilot 的 webhook 行为的当前限制,通过 GitHub Copilot 分配创建的分支不会被 TinaCloud 自动索引。这些分支不会触发 TinaCloud 依赖的分支创建 webhook 来开始索引内容。
我们已将此问题提交给 GitHub,并将在此 问题 中提供更新。
作为临时解决方案,可以从 TinaCloud 仪表板 手动重新索引由 GitHub Copilot 创建的分支。

21. 如何在媒体管理器中重命名媒体文件?
通过 TinaCloud 媒体管理器目前不支持重命名媒体文件。基于仓库的媒体仅跟踪单个分支,并且没有用于媒体操作(如重命名)的分支功能。如果跟踪的分支受到保护,上传重命名的文件将保存到存储(S3),但更改不会提交到分支。
作为一种解决方法,您可以通过在 GitHub 中直接进行更改来重命名媒体文件:
- 从您的媒体目录(例如
public/uploads/)中直接在 GitHub 中删除旧文件 - 等待删除同步回 TinaCloud
- 直接在 GitHub 中添加新名称的文件
- 等待添加同步回 TinaCloud
有关更多详细信息,请参阅 重命名媒体文件。