__Action Taken__
Tried to install by following documentation. npm install --only=production ran without error. First attempt did fail, because documentation failed to cite node-gyp as a dependency. Once corrected, installed without error.

__Expected Result__
App would start and display logging information indicating successful start
__Actual Result__
Receive error after running node gekko --ui
(node:15886) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: Exited with code 3

__Setup__
I tried to debug for a few hours, but with broken links throughout the documentation, seemingly incomplete installation documentation and no experience with Gekko in the past, it was difficult to get anywhere.
Unhandled Promise rejection warnings
One of the criticisms often made against Promises is the ease with which errors can be swallowed and ignored. Since io.js and Node.js v5, the ’unhandledRejection’ and ’rejectionHandled’ events, emitted on the process object, have been available to provide some insight into Promise rejections that are not handled. Due to the semantics of Promise error handling, it’s not as clear as an uncaughtException since a rejection could potentially be stored and handled at a later time. In fact, one of the early candidates for the ’unhandledRejection’ event name was ’possiblyUnhandledRejection’. Modern idiomatic Promise usage, however, suggests that this is an anti-pattern and that rejection handlers should be placed on a promise near to its creation, either directly on construction or straight afterward.
Since Node.js v6.6.0, the ’unhandledRejection’ event now also causes a warning to be printed to standard error.
$ node
new Promise((resolve, reject) => { setTimeout(() => { reject(new Error('Whoa!')) }, 100) })
Promise {}
(node:35449) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: Whoa!
This behavior can be turned off (at your peril!) with the --no-warnings command line argument or made more verbose to include stack traces with the --trace-warnings command line argument so you can track down the location of the errant code.
$ node
$ node --trace-warnings
new Promise((resolve, reject) => { setTimeout(() => { reject(new Error('Whoa!')) }, 100) })
Promise {}
(node:35484) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: Whoa!
at emitPendingUnhandledRejections (internal/process/promises.js:57:27)
at runMicrotasksCallback (internal/process/next_tick.js:61:9)
at combinedTickCallback (internal/process/next_tick.js:67:7)
at process._tickDomainCallback (internal/process/next_tick.js:122:9)
Since a rejection handler could still be handled after Promise creation, via the catch() method, the warning is not emitted or printed until after the next tick of the event loop after the rejection.
$ node
function resolver (resolve, reject) { setTimeout(() => { reject(new Error('Whoa!')) }, 100) }
undefined
// rejection handler attached on same tick:
p = new Promise(resolver); p.catch((err) => { console.error(err) });
Promise {}
Error: Whoa!
at Timeout.setTimeout (repl:1:81)
at ontimeout (timers.js:365:14)
at tryOnTimeout (timers.js:237:5)
at Timer.listOnTimeout (timers.js:207:5)
// rejection handler added on a later tick, causing an additional ‘rejectionHandled’ event
p = new Promise(resolver)
Promise {}
(node:35560) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: Whoa!
p.catch((err) => { console.error(err) });
Promise {}
(node:35560) PromiseRejectionHandledWarning: Promise rejection was handled asynchronously (rejection id: 1)
Error: Whoa!
at Timeout.setTimeout (repl:1:81)
at ontimeout (timers.js:365:14)
at tryOnTimeout (timers.js:237:5)
at Timer.listOnTimeout (timers.js:207:5)
https://nodesource.com/blog/the-10-key-features-in-node-js-v6-lts-boron-after-you-upgrade/
You can try on updating the nodejs on your ubuntu machine.I solved the same issue by updating.
curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
sudo apt-get install -y nodejs
(node:15886) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: Exited with code 3
This is not actually a fatal error! Gekko UI tries to open your browser automatically, which doesn't work on machines without a display manager (like servers, VPS, etc.). You can ignore this warning and use your browser anyway.
I tried to debug for a few hours, but with broken links throughout the documentation, seemingly incomplete installation documentation and no experience with Gekko in the past, it was difficult to get anywhere.
I'm not sure if this is a complaint or if you actually want to see something fixed?
In my experience the UI works great for desktop users. I'm going pretty fast and am changing Gekko quite a lot. What part of the documentation was broken?
I added a new doc explaining how to configure Gekko to run in a headless environment, following that won't result in the promise error:
https://github.com/askmike/gekko/blob/stable/docs/installing_gekko_on_a_server.md
First attempt did fail, because documentation failed to cite node-gyp as a dependency.
That's because either A) you use a non standard version installed of node, or B) you are running some distro where sqlite doesn't have prebuild binaries for. node-gyp is the fallback that compiles sqlite on your own machine (not needed 99% of the cases).
@askmike Thank you so much! :smile:
:)