Перейти до вмісту

Усунення несправностей

Поширені помилки 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(); див. Фреймворки.

Чи була ця сторінка корисною?