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
In Node 26.1.0,
extract-zipfails 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.jsfile againsttest/github.zipin this repo on Node 26.1.0: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):
Running on Node 26.0.0 (and other previous version), the extraction completes as expected: