常见问题解答/故障排除
收集了常见问题解答,以及如何解决这些问题的想法。
如果您有任何问题未在此处得到解答,请随时为本页面贡献改进或在 GitHub 上创建一个新的讨论。此外,如果您在此处没有找到答案,请查看 GitHub 讨论 和我们的 Discord。
它不起作用!我到处都得到 any
- 确保您的代码中没有类型错误
- 确保您的
tsconfig.json
中有"strict": true
- 确保您的
@trpc/*
版本在您的package.json
中匹配
如何让中间件更改我的 Context
的类型?
请参阅 上下文扩展。
tRPC 是否已准备好投入生产?
是的。tRPC 非常稳定,被数千家公司使用,甚至像 Netflix 和 Pleo 这样的大型公司都在生产环境中使用 tRPC。
为什么 tRPC 在我的单体仓库中不起作用?
这是一个很难回答的问题,但由于 tRPC 没有任何构建步骤,因此问题不太可能出在 tRPC 方面。
以下是一些需要检查的事项
- 确保您在所有项目中都使用相同版本的
@trpc/*
- 确保您在所有
tsconfig.json
中都使用"strict": true
- 确保您的应用程序中没有类型错误
- 如果您有专用的服务器和客户端
tsconfig.json
文件,但没有捆绑的服务器单体仓库包,请确保您在客户端tsconfig.json
中有"paths": [...]
,就像您的服务器tsconfig.json
一样,这样客户端才能找到相同的文件。
您还可以查看我们的 Awesome tRPC 合集,以找到在单体仓库中使用 tRPC 的多个开源项目。
单体仓库是强制性的吗?
不,单体仓库不是强制性的,但如果您不使用它,您将失去使用 tRPC 的一些好处,因为您将失去客户端和服务器协同工作的保证。
您可以利用 tRPC 的一种方法是发布一个包含后端仓库类型的私有 npm 包,并在您的前端仓库中使用它们。
我可以根据发送的输入动态返回不同的输出吗?
目前不行,为了让 tRPC 自动执行此操作,我们需要一种名为“更高阶类型”的东西,而这在 TypeScript 中尚不支持。
我可以将中间件应用于整个路由器吗?
不行,但您可以使用 基本过程,它比在每个路由器级别上执行此操作提供更多灵活性。
tRPC 是否适用于 Next.js 13 应用程序布局和 RSC?
是的,tRPC 适用于 Next.js 13 应用程序布局和 React 服务器组件,但我们尚未为此构建任何官方示例。
有关更多信息,您可以阅读和关注 此问题,我们在其中引用了一些示例。
使用标记为 unstable_
的功能安全吗?
tl;dr:是的!
如果您在 tRPC 中遇到标记为 unstable_
的功能,这意味着 API 不稳定,可能会在次要版本更新中发生更改,但
- 实现的细节可能会在次要更改中发生变化 - 它的名称和选项可能会发生变化
- 如果它存在于 tRPC 中,它已经在生产环境中使用
- 我们非常鼓励您使用它
- 如果对
unstable_
功能进行了任何更改,它们将包含在发行说明中(您将看到类型错误) - 请在 github.com/trpc/trpc/issues 或 我们的 Discord 上的
#🧪-unstable-experimental-features
中报告任何关于 API 设计或问题的建议
使用标记为 experimental_
的功能安全吗?
如果您在 tRPC 中遇到标记为 experimental_
的功能,这意味着 API 不稳定,很可能在 tRPC 的任何更新中发生更改。
- 功能的广泛范围及其使用方式可能会发生变化
- 该功能可能没有经过充分测试
- 我们可能会完全放弃该功能
- 您需要阅读最新的文档并进行升级,而没有指导的迁移路径
- 更改可能不会在发行说明中得到很好的记录
- 错误不保证会被修复
但是,我们非常欢迎您的意见!请在 我们的 Discord 上的 #🧪-unstable-experimental-features
中报告任何关于 API 设计或问题的建议。
tRPC 对语义版本控制严格吗?
是的,tRPC 对 语义版本控制 非常严格,我们绝不会在次要版本更新中引入重大更改。
因此,除了在 JSDoc 中标记为 @internal
的那些之外,我们还将对导出的 TypeScript type
的更改视为重大更改。
为什么 tRPC 已经处于如此高的版本?
当 tRPC 开始并且用户很少时,我们经常在 API 设计上进行迭代,同时严格遵守语义版本控制。
- tRPC 的前 9 个版本是在项目的前 8 个月内发布的。
- 版本 10 是我们在 v9 发布 14 个月后发布的,应该被视为 tRPC 的真正“版本 2”,我们在其中对 API 决策进行了任何根本性更改。(2 在二进制中是 10,对吧?)
我们预计 API 现在将保持稳定,并计划在未来发布任何重大更改的代码重构,就像我们在 v9->v10 升级中所做的那样。
您还有其他想知道的吗?
请在 GitHub 上写一个功能请求,在 GitHub 讨论 或 Discord 上写。您也可以使用页面底部的“编辑此页面”按钮来建议改进此页面或任何其他页面。