# استكشاف أخطاء Tern وإصلاحها

## المثبّت يتوقف

| الرسالة | الحل |
| --- | --- |
| `This preview requires macOS on Apple Silicon.` | تعمل المعاينة على أجهزة Mac بمعالجات Apple Silicon فقط. |
| `Install Tern and enable its command-line tool before running this installer.` | ضع الأمر `tern` في `PATH`، ثم أعد تشغيل `sh ./install.sh`. |
| `Incomplete release: missing executable dist/elide-tern-…` | فكّ ضغط الأرشيف مجددًا؛ وتحقّق منه أولًا باستخدام `shasum -a 256 -c SHA256SUMS`. |
| `Incomplete release: runtime, SDK, or plugin is missing.` | كما في السطر السابق. |

## واجهة لا تُفتح

| الرسالة | الحل |
| --- | --- |
| ``The configured runtime has no `elide tern`; update it or set a launcher in plugin/config.json.`` | يشير `runtime` في `plugin/config.json` إلى نسخة Elide بلا واجهات Tern. اجعله يشير إلى `../runtime/bin/elide` في الإصدار، أو احذف الملف وأعد تشغيل `install.sh`. |
| `Configure plugin/config.json before launching a runtime.` | الملف `plugin/config.json` مفقود أو غير مقروء؛ أعد تشغيل `install.sh`. |
| `Set the embedded SDK directory in plugin/config.json.` | يحتاج **Open REPL** إلى `sdk`؛ ويضبطه المثبّت على `../sdk`. |
| `Configure a runtime launcher on this host before opening a remote session.` | تعمل الواجهات على المضيفات المحلية فقط. افتح المشروع في لوحة محلية. |
| `Open a local project directory first.` | انقل التركيز إلى لوحة يقع مجلدها داخل مشروع `elide.pkl`. |
| `No elide.pkl found in this directory or its parents.` | كما في السطر السابق. |

عندما يكون مسار بيانات إضافة Tern طويلًا بما يتجاوز حد طول مسار مقبس Unix، اضبط `state` في `plugin/config.json` على
مجلد خاص قصير.

## أمر يطبع نصًا عاديًا في Tern

| السبب | الحل |
| --- | --- |
| الأمر `elide` الموجود في `PATH` لا يملك واجهات Tern | تحقّق من `elide tern --help`؛ يجب أن يسرد `debug` و `project` و `repl`. ثبّت Elide 1.6.3 أو أحدث. |
| `--reporter` أو `--project` أو مسار اختبار غير موجود | سلوك متوقع: هذه التشغيلات تحتفظ بالمخرجات النصية. |
| مخرجات معاد توجيهها أو عبر أنبوب | سلوك متوقع. |
| `elide build` خارج مشروع `elide.pkl`، أو مع `--inspect` أو `--help` أو `--progress` | سلوك متوقع. |
| `elide serve --no-tui` | سلوك متوقع. |

القائمة الكاملة في [واجهات الطرفية](/docs/tern-terminal). والتحذير الذي يذكر `ELIDE_TERN_SURFACE` يعني أن المتغير يحمل
قيمة غير `inline` و `screen` و `auto`.

## `elide tern` يخرج بالحالة 2

يستضيف `elide tern repl|project|debug` الواجهات التي تشغّلها الإضافة، ويخرج بالرمز `2` خارج Tern. استخدم أوامر لوحة
الإضافة بدلًا من تشغيله بنفسك.

## رابط لا يفعل شيئًا

لا تُفتح روابط `elide://` إلا عبر الإضافة. ويعرض الرابط المتجاهَل إشعارًا يذكر السبب:

| الإشعار | السبب |
| --- | --- |
| `Ignored a malformed elide:// link.` | ترميز خاطئ، أو مفتاح مكرر، أو جزء (fragment)، أو مسار خارج جذره. |
| `Ignored an elide:// link whose root has no elide.pkl.` | `root` ليس مجلد مشروع. |
| `Ignored an elide:// link outside a detected project.` | لا يوجد `root`، والملف ليس في أي مشروع اكتشفته هذه النافذة. |
| `The linked file does not exist.` | نُقل الملف أو حُذف. |
| `elide:// links open on local hosts only.` | نُقر الرابط في لوحة بعيدة. |

تُقارن المسارات كما هي مكتوبة: الرابط إلى `/tmp/x` لا يطابق مشروعًا في `/private/tmp/x`.

## محرر الشيفرة المصدرية

| العرَض | السبب |
| --- | --- |
| لا يوجد تلوين | يحتوي الملف على أكثر من 600 سطر. |
| إشعار بدلًا من النص | يتجاوز الملف 512 KiB، أو غير مقروء، أو ليس بترميز UTF-8. |
| `Elide source shows JavaScript, TypeScript, Python, Kotlin and Java files.` | تُفتح أنواع الملفات الأخرى في محرر Tern. |
| لا توجد طبقة **Debug** | الملف ليس JavaScript أو TypeScript أو Python. |
| لا توجد طبقة **Diagnostics** | لا يملك المشروع تقرير بناء بعد؛ شغّل `elide build` في طرفية Tern. |
| كل ألوان التغطية باهتة، مع `Coverage measured an older version` | تغيّر الملف منذ تشغيل التغطية؛ شغّل التغطية مجددًا. |

## تصحيح الأخطاء

| الرسالة | الحل |
| --- | --- |
| `Save this file before debugging.` | يشغّل مصحّح الأخطاء الملف الموجود على القرص. احفظ ثم شغّل. |
| `Debugging takes JavaScript, TypeScript or Python sources.` | اختر ملفًا مدعومًا، أو استخدم منتقي الهدف. |
| عناصر التحكم معطّلة مع `Take control to drive the target` | واجهة أخرى تتحكم في الهدف؛ اختر **Take control**. |

## انظر أيضًا

- [استكشاف الأخطاء وإصلاحها](/docs/troubleshooting) للأخطاء خارج Tern
- [استكشاف أخطاء OpenTelemetry وإصلاحها](/docs/opentelemetry/troubleshooting)
