انتقل إلى المحتوى

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

أخطاء Elide الشائعة برسائلها الحرفية وطرق إصلاحها: الوحدات المفقودة، و Python، وأدوات JVM، ورفض العزل، وانتهاء المهلة، والذاكرة، والمنافذ.

في هذه الصفحة

يقتبس كل قسم خطأً كما يطبعه Elide، ثم يقدّم الإصلاح.

لا توجد وحدة مضمّنة بهذا الاسم

Error: No such built-in module: node:http2

الوحدات node:http2 و node:cluster و node:inspector و node:wasi غير متاحة؛ ويعيد require الرمز ERR_UNKNOWN_BUILTIN_MODULE. ودون البادئة node: تكون الرسالة Cannot find module 'http2'. وتفشل بالطريقة نفسها أي حزمة تستورد إحداها عند تحميلها، مثل Fastify. راجع حالة أي وحدة في نظرة عامة على API.

الوحدة غير موجودة بعد elide install

TypeError: Module not found: 'hono'

يثبّت الأمر elide install دون خيارات تبعيات Maven فقط. وعند وجود package.json وحده، لا يطبع شيئًا وينتهي بالرمز 0. ثبّت حزم npm باستخدام:

elide install --ecosystems=npm

Python غير مثبّتة

Python support is not installed. Run 'elide setup python' to add it.

رمز الخروج 2. شغّل elide setup python؛ ويسرد elide info اللغات المثبّتة في سطر Languages:. وأي ملف JavaScript يستورد وحدة .py قبل تثبيت Python ينتهي بالرمز 1 والرسالة Cannot import 'mod.py': Python support is not installed. مع التلميح نفسه. وبعد تثبيت Python، تحتاج الاستدعاءات بين اللغات أيضًا إلى --interop؛ راجع اللغات والتشغيل البيني.

elide javac دون --

error: '[-- TOOL_ARGS]…' can only be given after '--'

Usage: elide javac [FLAGS] [-- TOOL_ARGS]…

توضع وسائط javac و java و kotlinc وغيرها من أدوات JDK بعد --:

elide javac -- -d out Hello.java
elide java -- -cp out Hello

فشل أصناف Kotlin تحت elide java

elide kotlinc -- -d kout Main.kt
elide java -- -cp kout MainKt
Exception in thread "main" java.lang.NoClassDefFoundError: kotlin/collections/CollectionsKt
	at MainKt.main(Main.kt:2)
	at MainKt.main(Main.kt)
Caused by: java.lang.ClassNotFoundException: kotlin.collections.CollectionsKt

لا يضيف elide java المكتبة القياسية لـ Kotlin. شغّل الملف باستخدام elide run Main.kt، أو حزّم التطبيق بوصفه Jvm.JvmApplication. ويفشل kotlinc -include-runtime.

رفض العزل

الرسالةالإذن
EACCES: permission denied, open 'hello.txt'--allow-read=PATHS أو --allow-write=PATHS
Error: Filesystem read denied by policy: /app/node_modules/honoأضف مخزن npm إلى --allow-read؛ إذ ترتبط الحزم بروابط داخل ~/.cache/aube
fetch to 'example.com:443' is not permitted; grant it with --allow-net=example.comالخيار المذكور في الرسالة
spawn of 'echo' is not permitted; grant it with --allow-run=echoالخيار المذكور في الرسالة
fetch to 'example.com:443' denied by --deny-netأزل المضيف من --deny-net
spawn of 'echo' denied by --deny-runأزل الأمر من --deny-run

راجع العزل والحدود.

--deny-net دون =

error: equal sign is needed when assigning values to '--deny-net=<HOSTS>'

رمز الخروج 2. اكتب --deny-net=example.com؛ وينطبق الأمر نفسه على --deny-run. تقبل خيارات --allow-* قيمة اختيارية، لذا يسمح --allow-net example.com run app.js بكل المضيفين ويحاول تشغيل ملف اسمه example.com:

No file or script named 'example.com'

رمز الخروج 124

Error: --timeout 2s exceeded

أوقف الخيار --timeout=DURATION التشغيل. ارفع قيمته أو أزله.

رمز الخروج 3 ونفاد الذاكرة

يكتب الخيار --heap-dump-on-oom=FILE تفريغًا للكومة عندما تمتلئ، ثم ينتهي بالرمز 3:

Dumping heap to …/oom.hprof ...
Heap dump file created [308989015 bytes in 0.988 secs]

ودونه، ينتهي البرنامج عند امتلاء الكومة بالرمز 1 والرسالة Could not allocate an unaligned heap chunk because the heap address space is exhausted. ارفع --max-mem. وتفشل القيمة 128m أو أقل قبل أن يبدأ البرنامج:

Failed to create isolate: INSUFFICIENT_ADDRESS_SPACE (802)

المنفذ مستخدم بالفعل

يبلّغ node:http عن المنفذ المشغول:

Error: listen EADDRINUSE 127.0.0.1:3000

أما خوادم معالج fetch (export default { fetch }، Elide.serve) فلا تبلّغ عن شيء: إذ يبدأ خادم ثانٍ على المنفذ نفسه، وتتناوب الطلبات بين العمليتين. أوقف القديم أولًا:

ss -ltnp | grep :3000

طلب يعيد 500 دون طباعة أي خطأ

HTTP/1.1 500 Internal Server Error

يجيب معالج fetch الذي يرمي استثناءً بالحالة 500 Internal Server Error دون طباعة الخطأ. غلّف المعالج بـ try/catch وسجّل الخطأ. راجع إنشاء خدمة HTTP.

يوقف express.json() في Express الخادم

TypeError: Buffer.isBuffer is not a function

يوقف express.json() و express.text() العملية عند أول طلب له متن. اقرأ المتن بنفسك أو استخدم express.raw()؛ راجع أطر العمل.

هل كانت هذه الصفحة مفيدة؟