هل تظهر لك رسالة الخطأ “لا يمكن استخدام عبارة الاستيراد خارج الوحدة النمطية” عند استيراد شيء ما؟
إليك رسالة الخطأ الكاملة، “خطأ SyntaxError غير معروف: لا يمكن استخدام بيان الاستيراد خارج
الوحدة النمطية”.
السبب الرئيسي وراء حصولك على “خطأ مرجعي لم يتم اكتشافه: لم يتم تعريف مللي ثانية” هو أنه تم
تحديد نطاق الوحدات.
نظرًا لأنك تقوم بتحميل المكتبة باستخدام النماذج الأصلية، فلا يمكن الوصول إلى “ms” في علامة
البرنامج النصي لأنها ليست في النطاق العام وبمعنى آخر، أنت تحاول تشغيل الملف بشكل مستقل.
وفقًا لوثائق Node.js الرسمية، يُسمح ببيانات الاستيراد فقط في وحدات ES.
ومن ثم، لإصلاح رسالة الخطأ “Uncaught SyntaxError: Cannot use import issues
over a Module”، تحتاج إلى جعل Node.js يتعامل مع ملفك باعتباره وحدة ES.
يمكن أن تظهر رسالة الخطأ على WordPress وTypeScript وJavaScript والمزيد.
قبل أن تحاول إصلاحه، عليك التأكد من أن لديك أحدث إصدار من Node.js.
بعد ذلك حاول استخدام الطرق التالية:
الطريقة الأولى: إضافة type=”module” داخل علامة البرنامج النصي
الطريقة الثانية: إضافة type=”module” في ملف package.json
الطريقة الثالثة: استبدال “استيراد” بـ “يتطلب”
الطريقة الرابعة: النوع المرجعيORM
الطريقة الخامسة: استبدال “esnext” بـ “commonjs”
الطريقة الأولى: إضافة type=”module” داخل علامة البرنامج النصي
أضف type=”module” ضمن علامة البرنامج النصي.
سيشير هذا إلى أنها وحدة JavaScript.
قبل (خطأ):
<script src=”../src/main.js”></script>
بعد (صحيح):
<script type=”module” src=”../src/main.js”></script>
إذا كنت تتلقى خطأ CORS من هذا، فأنت بحاجة إلى إضافة “Access-Control-Allow-Origin:
*” في رؤوسك.
الطريقة الثانية: إضافة type=”module” في ملف package.json
أضف “type”: “module” في أقرب ملف package.json أصلي حيث سيؤدي هذا إلى التأكد من
الإشارة إلى ملفات .js و.mjs كوحدات ES.
ومع ذلك، إذا كنت تستخدم ملفات .ts، فستحتاج إلى استخدام “nodemon” بدلاً من “node”.
{ // … “type”: “module”, // … }
الطريقة الثالثة: استبدال “استيراد” بـ “يتطلب”
حاول استبدال “import { parse } from ‘node-html-parser’;” باستخدام “const parse =
require(‘node-html-parser’)” أو “const parse = require(‘node-html-parser’);”.
// import { parse } from ‘node-html-parser’; const parse = require(‘node-
html-parser’);
الطريقة الرابعة: النوع المرجعيORM
تحتاج إلى استخدام “dist” و”js” بدلاً من “src” و”ts”.
قبل (خطأ):
“entities”: [ “src/db/entity/*/.ts”, ],
بعد (صحيح):
“entities”: [ “dist/db/entity/*/.js”, ],
الطريقة الخامسة: استبدال “esnext” بـ “commonjs”
إذا كنت تواجه الخطأ في TypeScript، فيجب عليك القيام بما يلي:
بدلاً من:
“target”: “esnext”, “module”: “esnext”,
يستخدم:
“target”: “esnext”, “module”: “commonjs”,
الخاتمة
يعد الخطأ “Uncaught SyntaxError: لا يمكن استخدام عبارة الاستيراد خارج الوحدة
النمطية” أحد الأخطاء الأكثر شيوعًا التي يواجهها المطورون
هناك أكثر من 1.7 مليون مشاهدة له على StackOverflow.
في معظم الحالات، تظهر رسالة الخطأ لأنك لم تقم بتضمين type=”module” داخل علامة
البرنامج النصي.
بما في ذلك type=module سيشير إلى أنها وحدة JavaScript.