TypeScript / دليل حلول تحريري
إصلاح الاستيراد الذي يفحص وينهار أثناء التنفيذ
وائم حل المترجم مع المضيف وافحص الأسماء المولدة بدل افتراض إعادة paths كتابة JavaScript.
قاعدة معرفة للقراءة فقط · بلا تعليقات عامة
تعرّف على الأعراض
يحل tsc أو المحرر الاختصار ويبلغ Node عن وحدة مفقودة عند التنفيذ، أو يرفض الفاحص استيرادًا يملك المجمّع خريطته. تختلف الصياغة وفق الصيغة والإصدار؛ احفظ التشخيص والاستيراد المولد.
قد يظهر الفشل بعد تنظيف أو تحزيم لأن أداة التطوير وفرت اختصارًا. لا يثبت نجاح المصدر امتلاك المدخل المولد المحلل نفسه.
افهم الأسباب المحتملة
- تصف paths مواقع المصدر أو الأنواع ولا تعيد عادة كتابة الاختصار نسبيًا. يحتاج المضيف دعمًا متوافقًا. يختار moduleResolution نموذج الفحص وتؤثر module وبيانات الحزمة في الصيغة. اختر وصف المضيف لا إسكات خطأ.
- قد تشترك ESM وCommonJS والامتدادات وexports وحساسية الاسم والملفات المفقودة ومداخل التصريحات في العرض. افحص إعداد الأمر الفاشل لا مشروع المحرر أو إعداد التطوير المختلف.
فحص حل المترجم والتنفيذ منفصلين
سجّل الإصدارين والإعداد وtype والاستيراد والناتج. يوضح التتبع اختيار المصدر ولا يثبت معرفة المضيف بالاختصار. يبين المقطع خريطة فحص لتجربة CommonJS، ويحتاج المصدرين وأوامر البناء والتشغيل ولا يوسم مستقلًا. لا يُختلق تتبع خطأ.
{"compilerOptions":{"strict":true,"target":"ES2022","module":"CommonJS","moduleResolution":"Node","baseUrl":".","paths":{"@app/*":["src/*"]},"outDir":"dist"},"include":["src/**/*.ts"]}
إعداد للتجربة التابعة؛ لا تثبت paths محلل اختصار في Node.
تحديد تنفيذ الوحدة المقصودة
أنشئ src/math.ts بالعملية التالية. يكون الاستيراد المشكل import { double } from "@app/math"؛ يحل الفاحص المصدر وتحتفظ CommonJS بطلب الاسم الشبيه بالحزمة. لا تجعل declare module المضيف يجد math.js. أكد توليد التنفيذ وتحزيمه قبل تغيير اعتماديات بعيدة.
export function double(value: number): number { return value * 2; }
اعتمادية مصدر للتجربة وليست مدخلًا مستقلًا.
اختيار مسار يحمله المضيف المختار
لهذه التجربة CommonJS غيّر src/main.ts للاستيراد النسبي. ترجم الملفين وشغّل dist/main.js بسياق CommonJS فيطبع 8. يحتفظ الناتج باسم يحله Node بجوار math.js. تحتاج ESM NodeNext إعدادًا وسياسة امتداد مطابقين وغالبًا .js. لا تنقل قاعدة CommonJS لمضيف مختلف دون فحص.
import { double } from "./math";
console.log(double(4));
مدخل تابع مصحح؛ ناتج التجربة المتوقع 8 ثم سطر جديد.
تحقق من نجاح الإصلاح
أنشئ الملفات الثلاثة وpackage.json بـtype commonjs في مجلد مؤقت. شغّل المترجم بـ-p tsconfig.json ثم Node على dist/main.js. أكد النجاح والسطر 8 وافحص الاستيراد لا الفحص وحده.
إذا أبقيت الاختصار فاختبر المحلل الموثق بأمر الإنتاج والناتج المحزم. لا يعادل إعداد محرر أو أداة تطوير ذلك. احفظ الإعداد كتجربة منع عودة.
امنع تكرار المشكلة
- اختر الخيارات وفق المضيف وأظهر المصدر والناتج وشغّل المدخل ضمن الفحوص. وثّق الاختصار ولا تصلح التحميل بتصريحات محيطية شاملة.