よくある質問 / トラブルシューティング
このページは PageTurner AI で翻訳されました(ベータ版)。プロジェクト公式の承認はありません。 エラーを見つけましたか? 問題を報告 →
よく寄せられる質問と、それらのトラブルシューティング・解決方法をまとめました。
このページの改善に貢献いただくか、ここで回答されていない質問がある場合はGitHubで新規ディスカッションを作成してください。また、GitHub DiscussionsやDiscordも確認してみてください。
動かない! すべてany型になってしまう
-
コードに型エラーがないことを確認してください
-
tsconfig.jsonに"strict": trueが設定されていることを確認してください -
package.json内の@trpc/*バージョンが一致していることを確認してください
ミドルウェアでContextの型を変更するには?
Contextの拡張を参照してください。
tRPCはプロダクション環境で使えますか?
はい。tRPCは非常に安定しており、NetflixやPleoといった大企業を含む数千社がプロダクション環境で使用しています。
モノレポでtRPCが動作しないのはなぜですか?
難しい質問ですが、tRPCにはビルドステップがないため、問題がtRPC側にある可能性は低いです。
確認すべきポイント:
-
プロジェクト全体で全ての
@trpc/*パッケージのバージョンが統一されていることを確認してください -
全ての
tsconfig.jsonに"strict": trueが設定されていることを確認してください -
アプリケーションに型エラーがないことを確認してください
-
サーバーとクライアントで別々の
tsconfig.jsonファイルを使用し、サーバーモノレポパッケージをバンドルしていない場合、クライアントのtsconfig.jsonにサーバーのtsconfig.jsonと同じ"paths": [...]設定があることを確認し、クライアントが同じファイルを見つけられるようにしてください。
モノレポでtRPCを使用しているオープンソースプロジェクトの例は、Awesome tRPCコレクションで参照できます。
モノレポは必須ですか?
必須ではありませんが、モノレポを使用しない場合、クライアントとサーバーが連携して動作する保証が失われるため、tRPCを使用する利点の一部が損なわれます。
代替方法として、バックエンドリポジトリの型定義をプライベートnpmパッケージとして公開し、フロントエンドリポジトリで消費する方法があります。
関連ディスカッション: https://github.com/trpc/trpc/discussions/1860
入力内容に応じて動的に異なる出力を返せますか?
現時点ではできません。tRPCでこれを自動化するには「高階型(Higher kinded types)」が必要ですが、これはTypeScriptでまだサポートされていません。
関連ディスカッション: https://github.com/trpc/trpc/discussions/2150
ルーター全体にミドルウェアを適用できますか?
いいえ、代わりにベースプロシージャを使用できます。これはルーター単位で適用する場合よりも柔軟性を提供します。
tRPCはNext.js 13のApp LayoutとRSCと連携しますか?
はい、tRPCはNext.js 13のApp LayoutとReact Server Components(RSC)と連携しますが、現時点では公式サンプルは提供していません。
詳細については、いくつかの実装例を参照しているこちらのissueをご覧ください。
unstable_とマークされた機能を使用しても安全ですか?
要約: はい!
tRPCでunstable_とマークされた機能はAPIが不安定で、マイナーバージョン更新時に変更される可能性があることを意味しますが:
-
実装の詳細はマイナー更新で変更される可能性があります(名前やオプションが変わる場合があります)
-
機能がtRPCに存在する時点で、すでにプロダクション環境で使用されています
-
積極的な使用を推奨しています
-
unstable_機能への変更はリリースノートに記載され(型エラーとして可視化されます) -
API設計に関する提案や問題はgithub.com/trpc/trpc/issuesまたはDiscordの
#🧪-unstable-experimental-featuresチャンネルでお知らせください
experimental_とマークされた機能を使用しても安全ですか?
experimental_とマークされた機能はAPIが不安定で、tRPCのバージョンアップ時に変更される可能性が非常に高いことを意味します:
-
機能の広範な部分や使用方法が変更される可能性があります
-
十分なテストが行われていない可能性があります
-
機能が完全に削除される可能性があります
-
最新ドキュメントの確認とガイドなしのアップグレードは自己責任です
-
変更内容がリリースノートに十分記載されない可能性があります
-
バグ修正の保証はありません
ただし皆様のご意見は歓迎します!API設計に関する提案や問題はDiscordの#🧪-unstable-experimental-featuresチャンネルでお知らせください。
tRPCはセマンティックバージョニングを厳守していますか?
はい、tRPCはセマンティックバージョニングを厳守しており、マイナーバージョン更新で破壊的変更を導入することはありません。
JSDocで@internalとマークされたものを除き、exportされたTypeScriptのtype変更もメジャー変更とみなします。
なぜtRPCはすでに高いバージョンなのですか?
tRPCは初期段階でユーザーが少なかったため、セマンティックバージョニングを厳守しつつAPI設計を頻繁に更新していました。
-
最初の9バージョンはプロジェクト開始後8ヶ月以内にリリースされました
-
v9の14ヶ月後にリリースしたVersion 10はAPI設計を根本的に変更した実質的な「バージョン2」です (2 is 10 in binary, amirite?)
現在APIは安定していると見込んでおり、v9→v10アップグレード時と同様、将来の破壊的変更にはコードモドを提供する予定です。
他に知りたいことはありますか?
機能リクエストは GitHub に、質問や議論は GitHub Discussions または Discord に投稿してください。また、このページや他のページの改善点は、ページ下部の「Edit this page」ボタンから自由に提案することができます。