ungit icon indicating copy to clipboard operation
ungit copied to clipboard

Electron version struggles with app.asar

Open victorbnl opened this issue 1 year ago • 1 comments

I'm running the electron version and ungit crashes if there is an app.asar (seems to depend on which app.asar it is, and where the file is located) in the folder

2022-07-12T12:21:29.676Z - error: Error: ENOTDIR: not a directory, watch '/home/victor/ungit-electron/src/ungit-linux-x64/resources/app.asar/assets'
    at FSWatcher.<computed> (node:internal/fs/watchers:244:19)
    at Object.watch (node:fs:2251:34)
    at /home/victor/ungit-electron/ungit-linux-x64/resources/app.asar/node_modules/node-watch/lib/watch.js:398:22
    at hasNativeRecursive (/home/victor/ungit-electron/ungit-linux-x64/resources/app.asar/node_modules/node-watch/lib/has-native-recursive.js:61:12)
    at Watcher.watchDirectory (/home/victor/ungit-electron/ungit-linux-x64/resources/app.asar/node_modules/node-watch/lib/watch.js:381:3)
    at /home/victor/ungit-electron/ungit-linux-x64/resources/app.asar/node_modules/node-watch/lib/watch.js:414:16
    at /home/victor/ungit-electron/ungit-linux-x64/resources/app.asar/node_modules/node-watch/lib/watch.js:143:35
    at Array.forEach (<anonymous>)
    at /home/victor/ungit-electron/ungit-linux-x64/resources/app.asar/node_modules/node-watch/lib/watch.js:141:13
    at node:electron/js2c/asar_bundle:5:461

It seems to believe app.asar is a directory, which as an assets subdirectory, while it's a file

Reproduce

  1. Download and extract ungit's latest release
  2. Try to open the parent folder containing the extracted release, with ungit electron

Simple Linux command for the above

mkdir test && cd test && wget 'https://github.com/FredrikNoren/ungit/releases/download/v1.5.21/ungit-1.5.21-linux-x64.zip' && unzip ungit-1.5.21-linux-x64.zip && ungit-linux-x64/ungit

victorbnl avatar Jul 12 '22 12:07 victorbnl

electron monkey patches the fs APIs to transparently support reading files from asar archives (asar is similar to zip) which interfers with node-watch.

Related upstream bug https://github.com/yuanchuan/node-watch/issues/108

campersau avatar Jul 13 '22 13:07 campersau