Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

`FileSystem.makeTempDirectory` crashes the program when it fails, instead of failing the task

Geschlossen Anfängerfreundlich
#72 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Anfängerfreundlichkeit
86/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
javascript
Bereich
backend

Rechercherichtung

Beginne mit Gren/Kernel/FileSystem.js und führe die in der Issue verlinkte Reproduktion mit der gezeigten gren.json und Main.gren aus. Verfolge den Fehler-Callback von fs.mkdtemp und überprüfe, dass Fehler beim Parsen eines undefinierten Pfads nicht mehr zu einem Absturz führen. Als erledigt gilt die Aufgabe, wenn Task.onError einen FileSystem.Error erhält, dessen Code den zugrunde liegenden Fehler widerspiegelt, etwa ENOENT oder EPERM.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Found against: gren 0.6.6, gren-lang/core 7.4.2, gren-lang/node 6.1.3, node 22
Reproduction: https://github.com/gilramir/gren-bug-reports/tree/main/2026-09-14-maketempdirectory-failure

FileSystem.makeTempDirectory is a Task FileSystem.Error Path, but when node
cannot make the directory the program dies with The "path" argument must be of type string. Received undefined and the program's Task.onError never runs.
Expected: the task fails with an Error whose code is ENOENT (or EPERM, etc). Any failure
reaches it: a missing parent directory, a prefix naming a directory the user
cannot write, or a full temporary directory.

Reproduction

gren.json dependencies: gren-lang/core 7.4.2, gren-lang/node 6.1.3. Save as src/Main.gren. Build and run with gren make Main --output=app && node app:

module Main exposing (main)

import FileSystem
import FileSystem.Path as Path
import Init
import Node
import Stream
import Task


main : Node.SimpleProgram a
main =
    Node.defineSimpleProgram <| \env ->
        Init.await FileSystem.initialize <| \fs ->
            Node.endSimpleProgram
                (FileSystem.makeTempDirectory fs "no-such-directory/x"
                    |> Task.map (\path -> "made " ++ Path.toPosixString path)
                    |> Task.onError (\e -> Task.succeed ("failed: " ++ FileSystem.errorCode e))
                    |> Task.andThen (\line -> Stream.writeLineAsBytes line env.stdout)
                    |> Task.onError (\_ -> Task.succeed env.stdout)
                )

Output:

$ node app
node:internal/errors:540
      throw error;
      ^

TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received undefined
    at Object.normalize (node:path:1309:5)
    at _FilePath_parse (/path/to/app:2889:40)
    at _FilePath_fromString (/path/to/app:2885:10)
    at /path/to/app:3664:40
    at FSReqCallback.oncomplete (node:fs:186:23) {
  code: 'ERR_INVALID_ARG_TYPE'
}

Node.js v22.23.2

Cause

Gren/Kernel/FileSystem.js:

fs.mkdtemp(path.join(os.tmpdir(), prefix), function (err, dir) {
  if (err) {
    callback(
      __Scheduler_fail(
        _FileSystem_constructError(__FilePath_fromString(dir), err),
      ),
    );

On failure dir is undefined, and __FilePath_fromString(undefined) calls
path.normalize(undefined), which throws inside node's callback, where nothing
catches it.

Vorherrschende Sprache
JavaScript
Sterne
13
Forks
6
Ø Merge
2 T. 4 Std.
Gemergte PRs (30 T.)
2

Entwicklungsumgebung

Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus gren-lang/node

Alle Issues in gren-lang/node

Ähnliche Issues

Weitere Issues zu JavaScript

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.