跳至主要內容
版本:11.x

常見問題 / 疑難排解

收集常見問題,並提供有關如何進行疑難排解和解決問題的想法。

歡迎透過改善此頁面或在 GitHub 上建立新的討論來為此頁面做出貢獻,如果您有未在此處獲得解答的問題。此外,如果您在此處找不到解答,請瀏覽 GitHub 討論 和我們的 Discord

無法運作!我在所有地方都看到 any

  • 請確定您的程式碼中沒有型別錯誤
  • 請確定您的 tsconfig.json 中有 "strict": true
  • 請確定您的 @trpc/* 版本在 package.json 中相符

我該如何讓中間件變更我的 Context 型別?

請參閱 Context Extension

tRPC 已準備好投入生產環境嗎?

是的。tRPC 非常穩定,且被數千家公司使用,甚至像 NetflixPleo 這樣的大公司都在生產環境中使用 tRPC。

為什麼 tRPC 在我的單一儲存庫中不起作用?

這個問題很難回答,但由於 tRPC 沒有任何建置步驟,因此問題不太可能出在 tRPC 這一邊。

以下是一些需要檢查的事項

  • 確保專案中所有 @trpc/* 的版本相同
  • 確保所有 tsconfig.json 中都有 "strict": true
  • 確保應用程式中沒有類型錯誤
  • 如果您有專用的伺服器和用戶端 tsconfig.json 檔案,但沒有捆綁的伺服器單一儲存庫套件,請確保用戶端 tsconfig.json 中有 "paths": [...],就像伺服器 tsconfig.json 一樣,以便用戶端可以找到相同的檔案。

您也可以查看我們的 Awesome tRPC 收藏,以找到幾個在單一儲存庫中使用 tRPC 的開源專案。

單一儲存庫是強制性的嗎?

不,單一儲存庫不是強制性的,但如果您不使用它,您將失去使用 tRPC 的一些好處,因為您將失去用戶端和伺服器協同工作的保證。

您可以利用 tRPC 的一種方法是發布一個包含後端儲存庫類型且在前端儲存庫中使用的私有 npm 套件。

相關討論:https://github.com/trpc/trpc/discussions/1860

我可以根據我傳送的輸入動態傳回不同的輸出嗎?

不行,目前不行,為了讓 tRPC 自動執行此操作,我們需要稱為「高階類型」的東西,TypeScript 目前不支援這項功能。

相關討論:https://github.com/trpc/trpc/discussions/2150

我可以將中間件套用至完整的路由器嗎?

不行,但您可以改用 基本程序,與在每個路由器層級上執行此操作相比,它提供了更大的彈性。

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 對 semver 嚴格嗎?

是的,tRPC 對 語意化版本控制 非常嚴格,我們絕不會在次要版本升級中引入重大變更。

有了這個,我們也將對 exported TypeScript type 的變更視為重大變更,除了在 JSDoc 中標記為 @internal 的變更之外。

為什麼 tRPC 的版本已經這麼高了?

當 tRPC 開始時,使用者很少,我們經常在 API 設計上進行反覆運算,同時對 semver 嚴格執行。

  • tRPC 的前 9 個版本是在專案的前 8 個月中發布的。
  • 10 版 是我們在 v9 發布後 14 個月發布的,應視為 tRPC 真正的「2 版」,我們對 API 決策進行了任何基本變更。(2 是二進制中的 10,對吧?)

我們預期 API 現在是穩定的,並計畫在未來對任何重大變更發布 codemod,就像我們在 v9->v10 升級中所做的那樣。


還有其他你想知道的嗎?

請在 GitHub 上撰寫功能請求,在 GitHub 討論區 中撰寫,或在 Discord 中撰寫。您也可以使用頁面底部的「編輯此頁面」按鈕,建議改善此頁面或任何其他頁面。