FAQ / 故障排除
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
本页面收集了常见问题及其排查解决方案。
欢迎随时改进本页内容,若您的问题未在此处得到解答,请在GitHub发起新讨论。此外,若此处未覆盖您的问题,建议查阅GitHub讨论区或加入我们的Discord社区。
无法运行!所有类型都变成了any
-
确保代码中没有类型错误
-
确认
tsconfig.json中设置了"strict": true -
检查
package.json中所有@trpc/*依赖版本是否一致 -
确保您使用的是 tRPC 要求的 TypeScript 版本(
>=5.7.2) -
确保您的编辑器使用的 TypeScript 版本与
package.json中的一致
VSCode 设置
将以下设置添加到项目根目录的 .vscode/settings.json 中,以确保编辑器使用的 TypeScript 版本与 package.json 中的一致:
.vscode/settings.jsonjson{"typescript.tsdk": "node_modules/typescript/lib","typescript.enablePromptUseWorkspaceTsdk": true}
.vscode/settings.jsonjson{"typescript.tsdk": "node_modules/typescript/lib","typescript.enablePromptUseWorkspaceTsdk": true}
我们强烈建议将此文件提交到仓库中,这样您的同事也能获得相同的体验。
如何通过中间件修改Context类型?
参见上下文扩展文档。
tRPC是否可用于生产环境?
是的。tRPC非常稳定,已被数千家公司采用,包括Netflix和Pleo等大型企业都在生产环境中使用。
为何在monorepo中无法使用tRPC?
此问题难以直接定论,但由于tRPC不涉及构建步骤,问题大概率并非由tRPC本身引起。
请检查以下事项:
-
确保所有项目中
@trpc/*依赖版本完全一致 -
确认所有
tsconfig.json文件都设置"strict": true -
检查应用程序中是否存在类型错误
-
若您使用独立服务端与客户端
tsconfig.json文件(非monorepo打包模式),请确保客户端tsconfig.json中配置了与服务端tsconfig.json相同的"paths": [...]映射,使客户端能正确解析文件路径。
可参考Awesome tRPC资源集,查看使用tRPC的monorepo开源项目实例。
必须使用monorepo吗?
不必强制使用,但若不采用monorepo,将丧失tRPC的部分核心优势——无法保证客户端与服务端的协同工作能力。
替代方案:将后端仓库的类型定义发布为私有npm包,在前端仓库中引用该包。
能否根据输入动态返回不同输出类型?
目前不支持。tRPC需依赖TypeScript尚未实现的"高阶类型"(Higher kinded types)功能才能自动实现此特性。
能否对整个路由应用中间件?
不能,但可使用基础过程,这比按路由级处理更灵活。
tRPC是否兼容Next.js App Router和RSC?
是的,tRPC完全兼容Next.js App Router和React Server Components。具体配置方法请参考Next.js App Router设置指南。
使用标记为unstable_的功能安全吗?
太长不看版:安全!
如果您在 tRPC 中遇到标记为 unstable_ 的功能,意味着该 API 尚未稳定,可能在次要版本更新中发生变化,但请注意:
-
具体实现细节可能在次要更新中变动——包括功能名称和选项
-
只要该功能存在于tRPC中,就说明已有生产环境实践案例
-
我们非常鼓励您使用这些功能
-
对
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 升级时所做的。
slug: typescript-performance-lessons title: v10重构过程中的TypeScript性能优化经验 authors: [sachinraja]
还有其他问题?
请在 GitHub 提交需求,在 讨论区 留言,或加入 Discord。您也可以通过页面底部的 "编辑此页" 按钮提交改进建议。