Gekko: Gekko won't start on fresh VPS that meets all *stated* requirements

Created on 5 Apr 2017  Â·  7Comments  Â·  Source: askmike/gekko

__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.

screen shot 2017-04-05 at 5 07 57 am

__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

screen shot 2017-04-05 at 5 06 16 am

__Setup__

  • Ubuntu 16.04
  • nodejs 6.10.1
  • Default config

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.

All 7 comments

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:

:)

Was this page helpful?
0 / 5 - 0 ratings

Related issues

ChadTaljaardt picture ChadTaljaardt  Â·  5Comments

Oowii picture Oowii  Â·  4Comments

GiordanoFlorian picture GiordanoFlorian  Â·  4Comments

belemaire picture belemaire  Â·  5Comments

Chroll91 picture Chroll91  Â·  5Comments