Skip to content

Zip extraction fail in Node 26.1.0 #154

@aarongoldenthal

Description

@aarongoldenthal

In Node 26.1.0, extract-zip fails to completely extract zip files with an unsettled async process. It seems to occur when the first larger file is being extracted.

To reproduce, running this test-extract-zip.js file against test/github.zip in this repo on Node 26.1.0:

import extract from "extract-zip";

try {
  await extract("/app/github.zip", {
    dir: "/app",
    onEntry: (entry) => {
      console.log(`Extracting: ${entry.fileName}`);
    },
  });

  console.log("done");
} catch (err) {
  console.error("Extraction failed:", err);
}

In Node 26.1.0 on Linux (at least the Debian Trixie/Bookworm and Alpine containers) produces the following (also seen with other zip files):

# node test-extract-zip.js
Extracting: extract-zip-master/
Extracting: extract-zip-master/.gitignore
Extracting: extract-zip-master/.npmignore
Extracting: extract-zip-master/.travis.yml
Extracting: extract-zip-master/CONTRIBUTING.md
Extracting: extract-zip-master/cli.js
Extracting: extract-zip-master/index.js
Extracting: extract-zip-master/package.json
Extracting: extract-zip-master/readme.md
Extracting: extract-zip-master/test/
Extracting: extract-zip-master/test/cats.zip
Warning: Detected unsettled top-level await at file:///app/test-extract-zip.js:4
  await extract("/app/github.zip", {
  ^

Running on Node 26.0.0 (and other previous version), the extraction completes as expected:

# node test-extract-zip.js
Extracting: extract-zip-master/
Extracting: extract-zip-master/.gitignore
Extracting: extract-zip-master/.npmignore
Extracting: extract-zip-master/.travis.yml
Extracting: extract-zip-master/CONTRIBUTING.md
Extracting: extract-zip-master/cli.js
Extracting: extract-zip-master/index.js
Extracting: extract-zip-master/package.json
Extracting: extract-zip-master/readme.md
Extracting: extract-zip-master/test/
Extracting: extract-zip-master/test/cats.zip
Extracting: extract-zip-master/test/test.js
done

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions