"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف أصلحت مشكلة إعداد TypeScript: مستخدم الخاصية غير موجود في طلب النوع.

كيف أصلحت مشكلة إعداد TypeScript: مستخدم الخاصية غير موجود في طلب النوع.

تم النشر بتاريخ 2024-11-02
تصفح:362

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

المشكلة
لقد كنت أعمل على مشروع Node.js باستخدام TypeScript وExpress.js. في مرحلة ما، كنت بحاجة إلى إرفاق كائن مستخدم بكائن الطلب السريع، لكنني واجهت خطأ TypeScript هذا:

الخاصية "مستخدم" غير موجودة في النوع "طلب".

أدركت بسرعة أن هذا يحدث لأن كائن الطلب الافتراضي في Express لا يتضمن خاصية مستخدم، ولم يكن TypeScript سعيدًا بذلك.

الإصلاح الأولي
لإصلاح هذه المشكلة، قمت بتوسيع واجهة الطلب لإضافة خاصية المستخدم. وإليك كيف فعلت ذلك:

  1. لقد قمت بإنشاء ملف جديد يسمى 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 -g typescript

  1. قم بتشغيل مترجم TypeScript في وضع المراقبة : لقد استخدمت علامة --watch لإعادة ترجمة كود TypeScript تلقائيًا أثناء العمل:
    tsc --مشاهدة

  2. إعادة تشغيل محرر الأكواد الخاص بي: لقد قمت بإعادة تشغيل المحرر (VS Code في حالتي) للتأكد من تحميل كل شيء بشكل صحيح.

  3. تشغيل المشروع: بعد إعادة التشغيل، قمت بتشغيل المشروع مرة أخرى، وقد نجح!

خاتمة
ما اعتقدت أنه سيكون مشكلة صغيرة تحول إلى أيام من الإحباط، لكنني تمكنت أخيرًا من حلها! إذا كنت تواجه مشكلات مماثلة مع عدم تعرف TypeScript على الخصائص الجديدة في كائن طلب Express، فتذكر:

توسيع واجهة الطلب بشكل صحيح.
تأكد من تثبيت مترجم TypeScript (tsc) وتشغيله بشكل صحيح.
نأمل أن يساعد هذا أي شخص آخر عالق مثلي!

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/nikhilagr15/how-i-fixed-my-typescript-setup-issue-property-user-does-not-exist-on-type-request-46fj?1إذا كان هناك في حالة وجود أي انتهاك، يرجى الاتصال بـ [email protected] للحذف
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3