跳至主内容
版本:10.x

FAQ / 故障排除

非官方测试版翻译

本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

本页面收集了常见问题及其排查解决方案。

欢迎通过GitHub讨论区贡献改进或提出未解答的新问题。若问题未在此解决,也可查阅GitHub讨论或加入我们的Discord社区。

无法运行!所有类型都变成了any

  • 确保代码中没有类型错误

  • 确认tsconfig.json中设置了"strict": true

  • 检查package.json中所有@trpc/*依赖版本是否一致

如何通过中间件修改Context类型?

参见上下文扩展文档

tRPC是否可用于生产环境?

是的。tRPC非常稳定,已被数千家公司采用,包括NetflixPleo等大型企业都在生产环境中使用。

为何在monorepo中无法使用tRPC?

这个问题较难定位,但由于tRPC没有构建步骤,问题通常不在tRPC本身。

请检查以下事项:

  • 确保所有项目中@trpc/*依赖版本完全一致

  • 确认所有tsconfig.json文件都设置"strict": true

  • 检查应用程序中是否存在类型错误

  • 若使用独立客户端/服务端tsconfig.json且未打包monorepo服务包,需确保客户端tsconfig.json中的"paths": [...]配置与服务端tsconfig.json保持一致,使客户端能定位相同文件

可参考Awesome tRPC资源集,查看使用tRPC的monorepo开源项目实例。

必须使用monorepo吗?

不必强制使用,但若不采用monorepo,将丧失tRPC的部分核心优势——无法保证客户端与服务端的协同工作能力。

替代方案:将后端仓库的类型定义发布为私有npm包,在前端仓库中引用该包。

相关讨论:https://github.com/trpc/trpc/discussions/1860

能否根据输入动态返回不同输出类型?

目前不支持。tRPC需依赖TypeScript尚未实现的"高阶类型"(Higher kinded types)功能才能自动实现此特性。

相关讨论:https://github.com/trpc/trpc/discussions/2150

能否对整个路由应用中间件?

不能,但可使用基础过程,这比按路由级处理更灵活。

tRPC是否支持Next.js 13应用布局和RSC?

是的,tRPC兼容Next.js 13应用布局和React服务端组件(RSC),但尚未提供官方示例。

更多信息,您可以阅读并关注 此议题,我们在其中引用了一些示例。

使用标记为 unstable_ 的功能安全吗?

太长不看版:安全!

如果您在 tRPC 中遇到标记为 unstable_ 的功能,意味着该 API 尚未稳定,可能在次要版本更新中发生变化,但请注意:

  • 具体实现细节可能在次要更新中变动——包括功能名称和选项

  • 该功能已在实际生产环境中经过验证

  • 我们非常鼓励您使用这些功能

  • unstable_ 功能进行的任何更改都将包含在发布说明中(您会看到类型错误提示)

  • 欢迎在 github.com/trpc/trpc/issuesDiscord#🧪-unstable-experimental-features 频道反馈 API 设计建议

使用标记为 experimental_ 的功能安全吗?

如果您在 tRPC 中遇到标记为 experimental_ 的功能,意味着该 API 极不稳定,任何版本更新都可能导致变更:

  • 功能范围和用法可能发生重大变化

  • 测试覆盖可能不充分

  • 该功能可能被完全移除

  • 需要您自行查阅最新文档进行升级(不提供迁移指导)

  • 变更可能不会在发布说明中详细记录

  • 不保证会修复发现的缺陷

但我们非常重视您的反馈!欢迎在 Discord#🧪-unstable-experimental-features 频道提出 API 设计建议或问题。

tRPC 是否严格遵循语义化版本规范?

是的,tRPC 严格遵循语义化版本规范,我们绝不会在次要版本更新中引入破坏性变更。

同时,我们也将对 export 导出的 TypeScript type 类型的变更视为重大更新(标记为 @internal 的 JSDoc 类型除外)。

为什么 tRPC 的版本号如此之高?

tRPC 早期用户量较少时,我们在严格遵守语义化版本规范的前提下频繁迭代 API 设计。

  • 项目前 8 个月发布了前 9 个版本

  • 我们在 v9 发布 14 个月后推出的 版本 10 应视为真正的 "v2" 版本,其中对 API 进行了根本性重构 (2 is 10 in binary, amirite?)

当前 API 已趋于稳定,未来任何破坏性变更都将提供代码迁移工具,如同 v9→v10 升级时所做的。


还有其他问题?

请在 GitHub 提交需求,在 讨论区 留言,或加入 Discord。您也可以通过页面底部的 "编辑此页" 按钮提交改进建议。