Zum Inhalt springen

Fehlerbehebung

Häufige Elide-Fehler mit ihren genauen Meldungen und Lösungen: fehlende Module, Python, JVM-Werkzeuge, Sandbox-Verweigerungen, Timeouts, Speicher und Ports.

Auf dieser Seite

Jeder Abschnitt zitiert einen Fehler so, wie Elide ihn ausgibt, und nennt dann die Lösung.

Kein solches eingebautes Modul

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

node:http2, node:cluster, node:inspector und node:wasi sind nicht verfügbar; require liefert den Code ERR_UNKNOWN_BUILTIN_MODULE. Ohne das Präfix node: lautet die Meldung Cannot find module 'http2'. Ein Paket, das eines davon beim Laden importiert, etwa Fastify, scheitert auf dieselbe Weise. Den Status eines Moduls finden Sie in der API-Übersicht.

Modul nach elide install nicht gefunden

TypeError: Module not found: 'hono'

Ein einfaches elide install installiert nur Maven-Abhängigkeiten. Liegt nur eine package.json vor, gibt es nichts aus und endet mit Exit-Code 0. Installieren Sie npm-Pakete mit:

elide install --ecosystems=npm

Python ist nicht installiert

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

Exit-Code 2. Führen Sie elide setup python aus; elide info listet die installierten Sprachen in der Zeile Languages:. Eine JavaScript-Datei, die vor der Installation von Python ein .py-Modul importiert, endet mit Exit-Code 1 und Cannot import 'mod.py': Python support is not installed. sowie demselben Hinweis. Ist Python installiert, brauchen Aufrufe zwischen Sprachen außerdem --interop; siehe Sprachen und Interop.

elide javac ohne --

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

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

Argumente für javac, java, kotlinc und die anderen JDK-Werkzeuge stehen nach --:

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

Kotlin-Klassen scheitern unter 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 fügt die Kotlin-Standardbibliothek nicht hinzu. Führen Sie die Datei mit elide run Main.kt aus, oder verpacken Sie die App als Jvm.JvmApplication. kotlinc -include-runtime scheitert.

Sandbox-Verweigerungen

MeldungFreigabe
EACCES: permission denied, open 'hello.txt'--allow-read=PATHS oder --allow-write=PATHS
Error: Filesystem read denied by policy: /app/node_modules/honoDen npm-Speicher zu --allow-read hinzufügen; Pakete werden nach ~/.cache/aube verlinkt
fetch to 'example.com:443' is not permitted; grant it with --allow-net=example.comDas Flag aus der Meldung
spawn of 'echo' is not permitted; grant it with --allow-run=echoDas Flag aus der Meldung
fetch to 'example.com:443' denied by --deny-netDen Host aus --deny-net entfernen
spawn of 'echo' denied by --deny-runDen Befehl aus --deny-run entfernen

Siehe Sandbox und Limits.

--deny-net ohne =

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

Exit-Code 2. Schreiben Sie --deny-net=example.com; dasselbe gilt für --deny-run. Die --allow-*-Flags nehmen einen optionalen Wert, daher gibt --allow-net example.com run app.js alle Hosts frei und versucht, eine Datei namens example.com auszuführen:

No file or script named 'example.com'

Exit-Code 124

Error: --timeout 2s exceeded

--timeout=DURATION hat die Ausführung beendet. Erhöhen Sie den Wert oder entfernen Sie das Flag.

Exit-Code 3 und Speichermangel

--heap-dump-on-oom=FILE schreibt einen Heap-Dump, wenn der Heap voll ist, und endet dann mit Exit-Code 3:

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

Ohne das Flag endet ein voller Heap mit Exit-Code 1 und Could not allocate an unaligned heap chunk because the heap address space is exhausted. Erhöhen Sie --max-mem. Ein Wert von 128m oder weniger scheitert, bevor das Programm startet:

Failed to create isolate: INSUFFICIENT_ADDRESS_SPACE (802)

Port bereits belegt

node:http meldet einen belegten Port:

Error: listen EADDRINUSE 127.0.0.1:3000

Server mit Fetch-Handler (export default { fetch }, Elide.serve) melden nichts: Ein zweiter Server auf demselben Port startet, und die Anfragen wechseln zwischen beiden Prozessen. Beenden Sie zuerst den alten:

ss -ltnp | grep :3000

Eine Anfrage liefert 500, ohne dass ein Fehler ausgegeben wird

HTTP/1.1 500 Internal Server Error

Ein Fetch-Handler, der eine Ausnahme wirft, antwortet mit 500 Internal Server Error, ohne den Fehler auszugeben. Umschließen Sie den Handler mit try/catch und protokollieren Sie den Fehler. Siehe HTTP-Dienst erstellen.

Express: express.json() beendet den Server

TypeError: Buffer.isBuffer is not a function

express.json() und express.text() beenden den Prozess bei der ersten Anfrage mit Body. Lesen Sie den Body selbst oder verwenden Sie express.raw(); siehe Frameworks.

War diese Seite hilfreich?