iaincollins / icarus

ICARUS Terminal for Elite Dangerous
ISC License
169 stars 11 forks source link

npm Error: Invalid or unsupported zip format. No END header found (Arch Linux) #55

Open ThornedRose opened 5 months ago

ThornedRose commented 5 months ago

Following the Linux build instructions, I get an error when trying build the latest version. I have 0.18.1 installed previously which built fine when I was last playing (a year ago).

[▓▓▓▓▓▓▓@visas-marr Icarus]$ npm install
npm warn deprecated source-map-url@0.4.1: See https://github.com/lydell/source-map-url#deprecated
npm warn deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
npm warn deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
npm warn deprecated source-map-resolve@0.5.3: See https://github.com/lydell/source-map-resolve#deprecated
npm error code 1
npm error path /home/▓▓▓▓▓▓▓/.../Icarus/node_modules/changeexe
npm error command failed
npm error command sh -c node dlResHack
npm error The license of ResourceHacker.exe forbids distribution with this NPM package, so it will be downloaded at this time.
npm error Downloading resource_hacker.zip ...
npm error Download Completed
npm error Extracting resource_hacker.zip ...
npm error /home/▓▓▓▓▓▓▓/.../Icarus/node_modules/adm-zip/zipFile.js:101
npm error         if (!~endOffset) throw new Error(Utils.Errors.INVALID_FORMAT);
npm error                          ^
npm error
npm error Error: Invalid or unsupported zip format. No END header found
npm error     at readMainHeader (/home/▓▓▓▓▓▓▓/.../Icarus/node_modules/adm-zip/zipFile.js:101:32)
npm error     at new module.exports (/home/▓▓▓▓▓▓▓/.../Icarus/node_modules/adm-zip/zipFile.js:19:9)
npm error     at new module.exports (/home/▓▓▓▓▓▓▓/.../Icarus/node_modules/adm-zip/adm-zip.js:62:18)
npm error     at WriteStream.<anonymous> (/home/▓▓▓▓▓▓▓/.../Icarus/node_modules/changeexe/dlResHack.js:19:21)
npm error     at WriteStream.emit (node:events:532:35)
npm error     at finish (node:internal/streams/writable:946:10)
npm error     at node:internal/streams/writable:927:13
npm error     at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
npm error
npm error Node.js v22.2.0
npm error A complete log of this run can be found in: /home/▓▓▓▓▓▓▓/.npm/_logs/2024-05-23T02_10_36_845Z-debug-0.log

My system: OS: Arch Linux x86_64 Kernel: Linux 6.9.1-arch1-1 Shell: bash 5.2.26 npm: 10.8.0-1 node.js: 22.2.0-1

darkk99 commented 4 months ago

Having the same issue here.

capy@fedora:~/Documents/icarus$ npm install
npm warn deprecated source-map-url@0.4.1: See https://github.com/lydell/source-map-url#deprecated
npm warn deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
npm warn deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
npm warn deprecated source-map-resolve@0.5.3: See https://github.com/lydell/source-map-resolve#deprecated
npm error code 1
npm error path /var/home/capy/Documents/icarus/node_modules/changeexe
npm error command failed
npm error command sh -c node dlResHack
npm error The license of ResourceHacker.exe forbids distribution with this NPM package, so it will be downloaded at this time.
npm error Downloading resource_hacker.zip ...
npm error Download Completed
npm error Extracting resource_hacker.zip ...
npm error /var/home/capy/Documents/icarus/node_modules/adm-zip/zipFile.js:101
npm error         if (!~endOffset) throw new Error(Utils.Errors.INVALID_FORMAT);
npm error                          ^
npm error
npm error Error: Invalid or unsupported zip format. No END header found
npm error     at readMainHeader (/var/home/capy/Documents/icarus/node_modules/adm-zip/zipFile.js:101:32)
npm error     at new module.exports (/var/home/capy/Documents/icarus/node_modules/adm-zip/zipFile.js:19:9)
npm error     at new module.exports (/var/home/capy/Documents/icarus/node_modules/adm-zip/adm-zip.js:62:18)
npm error     at WriteStream.<anonymous> (/var/home/capy/Documents/icarus/node_modules/changeexe/dlResHack.js:19:21)
npm error     at WriteStream.emit (node:events:532:35)
npm error     at finish (node:internal/streams/writable:947:10)
npm error     at node:internal/streams/writable:928:13
npm error     at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
npm error
npm error Node.js v22.3.0
npm error A complete log of this run can be found in: /home/capy/.npm/_logs/2024-06-21T22_18_26_865Z-debug-0.log

My system: OS: Fedora Linux 40.20240621.0 (Bazzite GNOME) Kernel: Linux 6.9.4-201.fsync.fc40.x86_64 Shell: bash 5.2.26 npm: 10.8.1 node.js: v22.3.0

This appears to be an issue with ResourceHack, since it fails to install on its own when trying to install it manually through NPM.

darkk99 commented 4 months ago

just tested- as of right now, 0.18.1 also fails to build

joebywan commented 4 months ago

(On linux mint 21.3)

I believe it's an issue with the 1.0.2 version of changeexe, changing the ./icarus/package.json version in devDependencies for changeexe from 1.0.2 to 1.0.3 let me perform an error free run of npm install.

I don't believe the development build is working though, as say it's serving on 3300, and that it's loaded log files etc, but then when trying to access localhost:3300 in Firefox, it'll show this in the firefox window: image

Then simultaneously showing the following in the terminal window: npm start

icarus@0.22.0 start npm run dev

icarus@0.22.0 dev node src/service/main.js --dev

ICARUS Terminal Service 0.22.0 Loading save game data from /mnt/a0ddbe08-16dd-4eef-b855-ffd7cf80f79c/SteamLibrary/steamapps/compatdata/359320/pfx/drive_c/users/steamuser/Saved Games/Frontier Developments/Elite Dangerous Listening on port 3300… Scanned 21 files Imported 9107 events (node:29796) [DEP0060] DeprecationWarning: The util._extend API is deprecated. Please use Object.assign() instead. (Use node --trace-deprecation ... to show where the warning was created)

joebywan commented 4 months ago

I dug through the woefully out of date http-proxy dependency, and managed to eliminate the util._extend calls, but then that moved to react issues aswell.

I did read that chrome is required, I tested on Chromium aswell, no luck.

Then I figured that potentially due to the age of the dependencies, that we could be using too new a version of node. Unfortunately the package.json doesn't specify a version, so I took a try with v16, then v14, both throwing errors (the same in chromium and firefox).

So either this is borked completely, and requires someone with js/node experience, or the linux compatibility isn't correct anymore.

iaincollins commented 2 months ago

Thanks for reporting this, and for folks who dug into it and tried to help out!

Given the package versions are fixed and builds are automated, I suspect all the errors are caused by a Node.js version mismatch. Node.js v14.15.3 (LTS) is what the build for Windows targets. I'll update the build instructions to make this clear.

ICARUS is written to target an older version of Node.js as a concession to primarily targeting Windows (the only platform the game is officially supported on now) - annoyingly there are some tricky compatibility issues with different versions of Node.js for Windows and various modules (I think file watching stopped working reliably in some newer versions, for example).

Several development dependencies like changeexe are only used to build the Windows version and can be stripped entirely. Firefox works fine, but is missing some cosmetic features only possible in some other browsers, errors there also seem to be Node.js version related.

In addition to the docs, I'll see if I can do anything to make this easier.