FAQ / 故障排除
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
本页面收集了常见问题及其排查解决方案。
欢迎通过GitHub讨论区贡献改进或提出未解答的新问题。若问题未在此解决,也可查阅GitHub讨论或加入我们的Discord社区。
无法运行!所有类型都变成了any
-
确保代码中没有类型错误
-
确认
tsconfig.json中设置了"strict": true -
检查
package.json中所有@trpc/*依赖版本是否一致
如何通过中间件修改Context类型?
参见上下文扩展文档。
tRPC是否可用于生产环境?
是的。tRPC非常稳定,已被数千家公司采用,包括Netflix和Pleo等大型企业都在生产环境中使用。
为何在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包,在前端仓库中引用该包。
能否根据输入动态返回不同输出类型?
目前不支持。tRPC需依赖TypeScript尚未实现的"高阶类型"(Higher kinded types)功能才能自动实现此特性。
能否对整个路由应用中间件?
不能,但可使用基础过程,这比按路由级处理更灵活。
tRPC是否支持Next.js 13应用布局和RSC?
是的,tRPC兼容Next.js 13应用布局和React服务端组件(RSC),但尚未提供官方示例。
更多信息,您可以阅读并关注 此议题,我们在其中引用了一些示例。
使用标记为 unstable_ 的功能安全吗?
太长不看版:安全!
如果您在 tRPC 中遇到标记为 unstable_ 的功能,意味着该 API 尚未稳定,可能在次要版本更新中发生变化,但请注意:
-
具体实现细节可能在次要更新中变动——包括功能名称和选项
-
该功能已在实际生产环境中经过验证
-
我们非常鼓励您使用这些功能
-
对
unstable_功能进行的任何更改都将包含在发布说明中(您会看到类型错误提示) -
欢迎在 github.com/trpc/trpc/issues 或 Discord 的
#🧪-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。您也可以通过页面底部的 "编辑此页" 按钮提交改进建议。