Electron GUI not working on linux

Hi all, we have a linux x86_64 machine which is running all the eVOLVERs in our lab. I’m trying to run the Electron GUI with AppImage linked here: Releases · FYNCH-BIO/evolver-electron · GitHub

But I’m getting the error:
cannot execute binary file: Exec format error

I tried to do the compiling and installing found here: GitHub - FYNCH-BIO/evolver-electron, but I run into a bunch of issues with yarn and I’m not good enough to debug it. I assume this is because the AppImage is compiled for a different CPU architecture? Any ideas on how I can get this working on our linux machine?

Thanks!

Hey Ziwei,

The AppImage file is meant for the GUI on the RPi, which I believe would be a different microcontroller architecture… I am not sure if I tried it on a different Linux machine before. Maybe @heinsz has tried it before?

Brandon

Hi Ziwei, Brandon,

Yes, we have run the GUI on linux before - @mgalardini may have some insights on how to go about this. If you share the errors you came across I can try to help you work through them.

Zack

So when I run yarn, I get to the point where it has me waiting for a bit and errors out with:

[4/4] Building fresh packages…
[6/6] ⡀ electron-chromedriver
[-/6] ⢀ waiting…
[3/6] ⢀ electron
[-/6] ⢀ waiting…
error /home/liusynevolab/evolver-electron-master/node_modules/node-sass: Command failed.
Exit code: 1

At the end, it outputs:
gyp ERR! build error
gyp ERR! stack Error: make failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/home/liusynevolab/evolver-electron-master/node_modules/node-gyp/lib/build.js:262:23)
gyp ERR! stack at ChildProcess.emit (events.js:314:20)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:276:12)
gyp ERR! System Linux 5.13.0-7614-generic
gyp ERR! command “/usr/bin/node” “/home/liusynevolab/evolver-electron-master/node_modules/node-gyp/bin/node-gyp.js” “rebuild” “–verbose” “–libsass_ext=” “–libsass_cflags=” “–libsass_ldflags=” “–libsass_library=”
gyp ERR! cwd /home/liusynevolab/evolver-electron-master/node_modules/node-sass
gyp ERR! node -v v12.21.0
gyp ERR! node-gyp -v v3.7.0

Do you see a yarn.lock file in your directory? If so, try deleting it and rerunning.

So after deleting yarn.lock as well as reinstalling all the correct versions of the dependencies, I was able to run yarn dev, which gives me the screen below:

Did the other window pop up with the actual application? Those errors are normal to see in the dev tools window.

Zack

Nothing else popped up except that. I didn’t see the electron GUI anywhere.

Do you see any errors on the terminal?

Here is the terminal output:

yarn run v1.22.15
warning ../../package.json: No license field
$ cross-env START_HOT=1 node -r babel-register ./internals/scripts/CheckPortInUse.js && cross-env START_HOT=1 yarn start-renderer-dev
warning ../../package.json: No license field
$ cross-env NODE_ENV=development node --trace-warnings -r babel-register ./node_modules/webpack-dev-server/bin/webpack-dev-server --config webpack.config.renderer.dev.js
Starting Main Process...
npm WARN lifecycle The node binary used for scripts is /tmp/yarn--1634314254949-0.6020737123872058/node but npm is using /usr/local/bin/node itself. Use the `--scripts-prepend-node-path` option to include the path for the node binary npm was executed with.

> evolver-app@0.14.0 start-main-dev /home/liusynevolab/Desktop/evolver-electron
> cross-env HOT=1 NODE_ENV=development electron -r babel-register ./app/main.dev.js

App threw an error during load
TypeError: _electron.app.setAboutPanelOptions is not a function
    at Object.<anonymous> (/home/liusynevolab/Desktop/evolver-electron/app/main.dev.js:248:5)
    at Object.<anonymous> (/home/liusynevolab/Desktop/evolver-electron/app/main.dev.js:255:3)
    at Module._compile (module.js:642:30)
    at loader (/home/liusynevolab/Desktop/evolver-electron/node_modules/babel-register/lib/node.js:144:5)
    at Object.require.extensions.(anonymous function) [as .js] (/home/liusynevolab/Desktop/evolver-electron/node_modules/babel-register/lib/node.js:154:7)
    at Module.load (module.js:561:32)
    at tryModuleLoad (module.js:504:12)
    at Function.Module._load (module.js:496:3)
    at loadApplicationPackage (/home/liusynevolab/Desktop/evolver-electron/node_modules/electron/dist/resources/default_app.asar/main.js:287:12)
    at Object.<anonymous> (/home/liusynevolab/Desktop/evolver-electron/node_modules/electron/dist/resources/default_app.asar/main.js:328:5)
e[1me[47me[31mA JavaScript error occurred in the main process
e[30mUncaught Exception:
TypeError: _electron.app.setAboutPanelOptions is not a function
    at Object.<anonymous> (/home/liusynevolab/Desktop/evolver-electron/app/main.dev.js:248:5)
    at Object.<anonymous> (/home/liusynevolab/Desktop/evolver-electron/app/main.dev.js:255:3)
    at Module._compile (module.js:642:30)
    at loader (/home/liusynevolab/Desktop/evolver-electron/node_modules/babel-register/lib/node.js:144:5)
    at Object.require.extensions.(anonymous function) [as .js] (/home/liusynevolab/Desktop/evolver-electron/node_modules/babel-register/lib/node.js:154:7)
    at Module.load (module.js:561:32)
    at tryModuleLoad (module.js:504:12)
    at Function.Module._load (module.js:496:3)
    at loadApplicationPackage (/home/liusynevolab/Desktop/evolver-electron/node_modules/electron/dist/resources/default_app.asar/main.js:287:12)
    at Object.<anonymous> (/home/liusynevolab/Desktop/evolver-electron/node_modules/electron/dist/resources/default_app.asar/main.js:328:5)e[0m
Error: Exited with code 9
    at ChildProcess.<anonymous> (/home/liusynevolab/Desktop/evolver-electron/node_modules/cross-unzip/index.js:38:21)
    at emitTwo (events.js:126:13)
    at ChildProcess.emit (events.js:214:7)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:198:12)
(node:115490) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError: Invalid template for Menu
(node:115490) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
e[31m✖e[39m e[90m「wdm」e[39m: 
ERROR in ./app/components/Setup.js
Module not found: Error: Can't resolve './SetupButtons/ButtonCards' in '/home/liusynevolab/Desktop/evolver-electron/app/components'
 @ ./app/components/Setup.js 39:19-56
 @ ./app/containers/SetupPage.js
 @ ./app/Routes.js
 @ ./app/containers/Root.js
 @ ./app/index.js
 @ multi react-hot-loader/patch webpack-dev-server/client?http://localhost:1212/ webpack/hot/only-dev-server ./app/index.js

ERROR in ./app/components/Setup.js
Module not found: Error: Can't resolve './SetupButtons/SetupButtons' in '/home/liusynevolab/Desktop/evolver-electron/app/components'
 @ ./app/components/Setup.js 35:20-58
 @ ./app/containers/SetupPage.js
 @ ./app/Routes.js
 @ ./app/containers/Root.js
 @ ./app/index.js
 @ multi react-hot-loader/patch webpack-dev-server/client?http://localhost:1212/ webpack/hot/only-dev-server ./app/index.js

ERROR in ./app/components/Setup.js
Module not found: Error: Can't resolve './SetupButtons/SetupLog' in '/home/liusynevolab/Desktop/evolver-electron/app/components'
 @ ./app/components/Setup.js 45:16-50
 @ ./app/containers/SetupPage.js
 @ ./app/Routes.js
 @ ./app/containers/Root.js
 @ ./app/index.js
 @ multi react-hot-loader/patch webpack-dev-server/client?http://localhost:1212/ webpack/hot/only-dev-server ./app/index.js

ERROR in ./app/app.global.css (./node_modules/css-loader??ref--6-1!./app/app.global.css)
Module not found: Error: Can't resolve './components/vialSelector.css' in '/home/liusynevolab/Desktop/evolver-electron/app'
 @ ./app/app.global.css (./node_modules/css-loader??ref--6-1!./app/app.global.css) 4:10-98
 @ ./app/app.global.css
 @ ./app/index.js
 @ multi react-hot-loader/patch webpack-dev-server/client?http://localhost:1212/ webpack/hot/only-dev-server ./app/index.js
Not rewriting GET /dist/renderer.dev.js because the path includes a dot (.) character.
Done in 19.01s.

That looks like a version issue. Can you try to delete the node_modules directory and do a yarn install?

It successfully built, but when running with yarn dev, we get a white screen. We got the following warning when building

WARNING in ./node_modules/electron-debug/index.js 101:45-58
Critical dependency: the request of a dependency is an expression
@ dll renderer

WARNING in ./node_modules/electron-debug/index.js 102:61-74
Critical dependency: the request of a dependency is an expression
@ dll renderer

WARNING in ./node_modules/log4js/lib/appenders/index.js 25:11-30
Critical dependency: the request of a dependency is an expression
@ ./node_modules/log4js/lib/log4js.js
@ dll renderer

In runtime we get this error:
A JavaScript error occurred in the main process
Uncaught Exception:
TypeError: _electron.app.setAboutPanelOptions is not a function
at Object. (/home/liusynevolab/Desktop/evolver-electron/app/main.dev.js:248:5)
at Object. (/home/liusynevolab/Desktop/evolver-electron/app/main.dev.js:255:3)
at Module._compile (module.js:642:30)
at loader (/home/liusynevolab/Desktop/evolver-electron/node_modules/babel-register/lib/node.js:144:5)
at Object.require.extensions.(anonymous function) [as .js] (/home/liusynevolab/Desktop/evolver-electron/node_modules/babel-register/lib/node.js:154:7)
at Module.load (module.js:561:32)
at tryModuleLoad (module.js:504:12)
at Function.Module._load (module.js:496:3)
at loadApplicationPackage (/home/liusynevolab/Desktop/evolver-electron/node_modules/electron/dist/resources/default_app.asar/main.js:287:12)
at Object. (/home/liusynevolab/Desktop/evolver-electron/node_modules/electron/dist/resources/default_app.asar/main.js:328:5)

Can you try to delete or comment out lines 248-250 in app/main.dev.js? They aren’t actually doing anything important, and I’m curious if other errors will appear if that gets taken out.

The white screen persists, and here is the output:

yarn run v1.22.15
warning ../../package.json: No license field
$ cross-env START_HOT=1 node -r babel-register ./internals/scripts/CheckPortInUse.js && cross-env START_HOT=1 yarn start-renderer-dev
warning ../../package.json: No license field
$ cross-env NODE_ENV=development node --trace-warnings -r babel-register ./node_modules/webpack-dev-server/bin/webpack-dev-server --config webpack.config.renderer.dev.js
Starting Main Process...
npm WARN lifecycle The node binary used for scripts is /tmp/yarn--1634405438530-0.3145149974248094/node but npm is using /usr/local/bin/node itself. Use the `--scripts-prepend-node-path` option to include the path for the node binary npm was executed with.

> evolver-app@0.14.0 start-main-dev /home/liusynevolab/Desktop/evolver-electron
> cross-env HOT=1 NODE_ENV=development electron -r babel-register ./app/main.dev.js

Error: Exited with code 9
    at ChildProcess.<anonymous> (/home/liusynevolab/Desktop/evolver-electron/node_modules/cross-unzip/index.js:38:21)
    at emitTwo (events.js:126:13)
    at ChildProcess.emit (events.js:214:7)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:198:12)
(node:138990) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError: Invalid template for Menu
(node:138990) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
e[31m✖e[39m e[90m「wdm」e[39m: 
ERROR in ./app/components/Setup.js
Module not found: Error: Can't resolve './SetupButtons/ButtonCards' in '/home/liusynevolab/Desktop/evolver-electron/app/components'
 @ ./app/components/Setup.js 39:19-56
 @ ./app/containers/SetupPage.js
 @ ./app/Routes.js
 @ ./app/containers/Root.js
 @ ./app/index.js
 @ multi react-hot-loader/patch webpack-dev-server/client?http://localhost:1212/ webpack/hot/only-dev-server ./app/index.js

ERROR in ./app/components/Setup.js
Module not found: Error: Can't resolve './SetupButtons/SetupButtons' in '/home/liusynevolab/Desktop/evolver-electron/app/components'
 @ ./app/components/Setup.js 35:20-58
 @ ./app/containers/SetupPage.js
 @ ./app/Routes.js
 @ ./app/containers/Root.js
 @ ./app/index.js
 @ multi react-hot-loader/patch webpack-dev-server/client?http://localhost:1212/ webpack/hot/only-dev-server ./app/index.js

ERROR in ./app/components/Setup.js
Module not found: Error: Can't resolve './SetupButtons/SetupLog' in '/home/liusynevolab/Desktop/evolver-electron/app/components'
 @ ./app/components/Setup.js 45:16-50
 @ ./app/containers/SetupPage.js
 @ ./app/Routes.js
 @ ./app/containers/Root.js
 @ ./app/index.js
 @ multi react-hot-loader/patch webpack-dev-server/client?http://localhost:1212/ webpack/hot/only-dev-server ./app/index.js

ERROR in ./app/app.global.css (./node_modules/css-loader??ref--6-1!./app/app.global.css)
Module not found: Error: Can't resolve './components/vialSelector.css' in '/home/liusynevolab/Desktop/evolver-electron/app'
 @ ./app/app.global.css (./node_modules/css-loader??ref--6-1!./app/app.global.css) 4:10-98
 @ ./app/app.global.css
 @ ./app/index.js
 @ multi react-hot-loader/patch webpack-dev-server/client?http://localhost:1212/ webpack/hot/only-dev-server ./app/index.js
Not rewriting GET /dist/renderer.dev.js because the path includes a dot (.) character.
Not rewriting GET /dist/renderer.dev.js because the path includes a dot (.) character.
Done in 28.30s.

Hi Ziwei,

Sorry I missed this - were you able to get it to work?

You can try to downgrade to yarn v1.22.10 - I just did a fresh install with that version and it worked. I also wonder if it is getting angry about the relative referencing in the import statements - you can try making those absolute. So for example:

ERROR in ./app/components/Setup.js
Module not found: Error: Can't resolve './SetupButtons/SetupButtons'

You can change line 8 in app/components/Setup.js to be:

import SetupButtons from 'components/SetupButtons/SetupButtons

Did you try the commands at the top of this guide?

Hi Zack,

Thanks for the help! Finally got this working!

What helped was the tip to downgrade yarn to v1.22.10, which along with deleting yarn.lock, allowed us to build it without issue. And thanks for pointing me to Setup.js. I did have to fix a couple of bugs in the header of Setup.js to get it to work, with the fixed lines shown below:

import VialSelector from './VialSelector'
import SetupButtons from './setupButtons/SetupButtons';
import ButtonCards from './setupButtons/ButtonCards';
import SetupLog from './setupButtons/SetupLog'

I still get the following errors when I run it, but it doesn’t seem to affect the base functionality of the GUI though:

App threw an error during load
TypeError: _electron.app.setAboutPanelOptions is not a function
    at Object.<anonymous> (/home/liusynevolab/evolver-electron-master/app/main.dev.js:248:5)
    at Object.<anonymous> (/home/liusynevolab/evolver-electron-master/app/main.dev.js:255:3)
    at Module._compile (module.js:642:30)
    at loader (/home/liusynevolab/evolver-electron-master/node_modules/babel-register/lib/node.js:144:5)
    at Object.require.extensions.(anonymous function) [as .js] (/home/liusynevolab/evolver-electron-master/node_modules/babel-register/lib/node.js:154:7)
    at Module.load (module.js:561:32)
    at tryModuleLoad (module.js:504:12)
    at Function.Module._load (module.js:496:3)
    at loadApplicationPackage (/home/liusynevolab/evolver-electron-master/node_modules/electron/dist/resources/default_app.asar/main.js:287:12)
    at Object.<anonymous> (/home/liusynevolab/evolver-electron-master/node_modules/electron/dist/resources/default_app.asar/main.js:328:5)
A JavaScript error occurred in the main process
Uncaught Exception:
TypeError: _electron.app.setAboutPanelOptions is not a function
    at Object.<anonymous> (/home/liusynevolab/evolver-electron-master/app/main.dev.js:248:5)
    at Object.<anonymous> (/home/liusynevolab/evolver-electron-master/app/main.dev.js:255:3)
    at Module._compile (module.js:642:30)
    at loader (/home/liusynevolab/evolver-electron-master/node_modules/babel-register/lib/node.js:144:5)
    at Object.require.extensions.(anonymous function) [as .js] (/home/liusynevolab/evolver-electron-master/node_modules/babel-register/lib/node.js:154:7)
    at Module.load (module.js:561:32)
    at tryModuleLoad (module.js:504:12)
    at Function.Module._load (module.js:496:3)
    at loadApplicationPackage (/home/liusynevolab/evolver-electron-master/node_modules/electron/dist/resources/default_app.asar/main.js:287:12)
    at Object.<anonymous> (/home/liusynevolab/evolver-electron-master/node_modules/electron/dist/resources/default_app.asar/main.js:328:5)e[0m
(node:137052) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError: Invalid template for Menu
(node:137052) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Anyways, thanks again for the help. I’ll update the thread if I run into any more issues.

Cheers,
Ziwei

1 Like