首頁  >  文章  >  web前端  >  我該如何修復 TypeScript 設定問題:類型請求中不存在屬性使用者。

我該如何修復 TypeScript 設定問題:類型請求中不存在屬性使用者。

DDD
DDD原創
2024-09-18 19:47:331067瀏覽

How I Fixed My TypeScript Setup Issue: Property user does not exist on type Request.

問題
我一直在使用 TypeScript 和 Express.js 開發 Node.js 專案。有一次,我需要將一個使用者物件附加到 Express Request 對象,但我遇到了這個 TypeScript 錯誤:

類型「Request」上不存在屬性「user」。

我很快意識到發生這種情況是因為 Express 的預設 Request 物件不包含使用者屬性,而 TypeScript 對此並不滿意。

我的初步修復
為了解決這個問題,我擴展了 Request 介面以新增使用者屬性。我是這樣做的:

  1. 我在專案的 types 資料夾中建立了一個名為express.d.ts 的新檔案:
// src/types/express.d.ts
import { User } from '@prisma/client'; // Assuming User is a Prisma model

declare global {
    namespace Express {
        interface Request {
            user?: User; // Add user to the Request interface
        }
    }
}
  1. 我更新了 tsconfig.json 以確保 TypeScript 選擇這種新類型:
{
  "compilerOptions": {
    //extra options here
    "typeRoots": ["./node_modules/@types", "./src/types"] // Add the types folder
  }
}

此時,錯誤從我的程式碼編輯器中消失了,所以我認為我已經解決了問題。但是當我嘗試運行該專案時,我在終端中遇到了另一個錯誤:

錯誤 TS2339:「請求」類型中不存在屬性「使用者」。

被困了好幾天
我花了 3-4 天的時間來解決這個問題,嘗試了網路上能找到的所有方法。我完全陷入困境,不明白為什麼它不起作用。

解決方案
最後,我發現了根本問題並透過以下步驟修復了它:

  1. 全域安裝 TypeScript:我意識到我沒有全域安裝 TypeScript 編譯器(tsc),所以我執行了這個指令:

npm install -g typescript

  1. 在監視模式下執行 TypeScript 編譯器:我使用 --watch 標誌在工作時自動重新編譯我的 TypeScript 程式碼:
    tsc --觀看

  2. 重新啟動我的程式碼編輯器:我重新啟動了我的編輯器(在我的例子中為 VS Code)以確保所有內容都已正確載入。

  3. 運行項目:重新啟動後,我再次運行該項目,它成功了!

結論
我原本以為是個小問題,結果變成了幾天的挫敗感,但我終於成功了!如果您遇到類似的問題,TypeScript 無法辨識 Express 的 Request 物件上的新屬性,請記住:

正確擴充Request介面。
確保 TypeScript 的編譯器 (tsc) 已安裝並正常運作。
希望這可以幫助其他像我一樣陷入困境的人!

以上是我該如何修復 TypeScript 設定問題:類型請求中不存在屬性使用者。的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn