「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > TypeScript セットアップの問題を解決した方法: タイプ リクエストにプロパティ ユーザーが存在しません。

TypeScript セットアップの問題を解決した方法: タイプ リクエストにプロパティ ユーザーが存在しません。

2024 年 11 月 2 日に公開
ブラウズ:227

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

問題
私は TypeScript と Express.js を使用して Node.js プロジェクトに取り組んでいます。ある時点で、Express Request オブジェクトにユーザー オブジェクトをアタッチする必要がありましたが、次の TypeScript エラーが発生しました:

プロパティ 'user' はタイプ 'Request' に存在しません。

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. TypeScript がこの新しい型を確実に認識できるように、tsconfig.json を更新しました。
{
  "compilerOptions": {
    //extra options here
    "typeRoots": ["./node_modules/@types", "./src/types"] // Add the types folder
  }
}

この時点で、コード エディターからエラーが消えたので、問題は解決したと思いました。しかし、プロジェクトを実行しようとすると、ターミナルで別のエラーが発生しました:

エラー TS2339: プロパティ 'user' がタイプ 'Request' に存在しません。

何日も行き詰まった
この問題のトラブルシューティングに 3 ~ 4 日を費やし、オンラインで見つけられるものはすべて試しました。私は完全に行き詰まり、なぜ機能しないのか理解できませんでした。

解決策
最後に、根本的な問題を発見し、次の手順で修正しました:

  1. TypeScript をグローバルにインストール: TypeScript コンパイラ (tsc) がグローバルにインストールされていないことに気づいたので、次のコマンドを実行しました:

npm install -g typescript

  1. TypeScript コンパイラーを監視モードで実行する: --watch フラグを使用して、作業中に TypeScript コードを自動的に再コンパイルしました:
    tsc --watch

  2. コード エディタを再起動します: すべてが正しく読み込まれたことを確認するために、エディタ (私の場合は VS Code) を再起動しました。

  3. プロジェクトを実行する: 再起動した後、プロジェクトを再度実行しました。うまくいきました。

結論
小さな問題だと思っていたことがイライラの日々になりましたが、ついにうまくいくようになりました。 TypeScript が Express の Request オブジェクトの新しいプロパティを認識しないという同様の問題に直面している場合は、次のことを忘れないでください。

リクエスト インターフェイスを正しく拡張します。
TypeScript のコンパイラ (tsc) がインストールされ、適切に実行されていることを確認してください。
これが、私と同じように立ち往生している他の人の助けになれば幸いです!

リリースステートメント この記事は次の場所に転載されています: https://dev.to/nikhilagr15/how-i-fixed-my-typescript-setup-issue-property-user-does-not-exist-on-type-request-46fj?1If there何らかの侵害がある場合は、削除するには[email protected]までご連絡ください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3