اذهب إلى المحتوى

السؤال

نشر

 

أحاول تشغيل تطبيق React مكتوب بـ TypeScript، وواجهت بعض الأخطاء.

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

TS2304: Cannot find name 'require' 

هذا هو محتوى الملف هنا:

'use strict';

const mongoose = require('mongoose'),
mongooseSchema = mongoose.Schema;

// The rest of the code

الكود بسيط للغاية لكن رغم ذلك يظهر الخطأ السابق بدون سبب مفهوم.

Recommended Posts

  • 1
نشر

يمكن حل هذه المشكلة بأكثر من طريقة، ومنها:

  • إذا كان لديك ملف واحد فقط يستخدام جملة require، يمكنك تحديد require في الجزء العلوي من الملف بهذا الشكل:
    declare var require: any

    بهذه الطريقة ستعمل جملة require في هذا الملف فقط، لكن ستظل المشكلة قائمة في أي ملف TypeScript آخر.

  • إن كنت تستخدم TypeScript الإصدار الثاني فيمكنك فقط تثبيت حزمة types/node وستحل المشكلة على الفور في كل ملفات المشروع، يمكنك تثبيت الحزمة عبر الأمر:
    npm install @types/node --save-dev

    ثم عليك بتعديل ملف src/tsconfig.app.json أو إنشاءه إن لم يكن موجود وإضافة التالي:

    {
    
      "types": [ "node" ],
      "typeRoots": [ "../node_modules/@types" ]
    
    }

    في الغالب لن تضطر إلى تعديل الملف src/tsconfig.app.json وهذا لأنه يتم تعديله بشكل تلقائي من قبل node.

  • إن كنت تستخدم TypeScript الإصدار الأول أو أقل فيجب تثبيت حزمة typings بالشكل التالي:
    npm install typings -g --save-dev
    
    // ثم نفذ الأمر التالي
    typings install dt~node --save --global

     

  • في حالة إستخدامك لـ Webpack لبناء ملفات مشروعك، فيجب أن تقوم بتثبيت حزمة @types/webpack-env التي ستعالج هذه المشكلة في كل ملفات المشروع، ويمكنك تثبيت الحزمة من خلال الأمر:
    npm install --save-dev @types/webpack-env

    ثم يجب تعديل ملف tsconfig.json (في مجلد المشروع الرئيسي بجانب ملف package.json) بهذا الشكل:

    "compilerOptions": {
        // إعدادات أخرى
        "types": [
          "webpack-env"
        ]
      }

     

بالتوفيق، تحياتي.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...