Skip to content
This repository has been archived by the owner on Jun 4, 2024. It is now read-only.

Building from source on Mac #340

Closed
shannonlal opened this issue Jan 13, 2018 · 12 comments
Closed

Building from source on Mac #340

shannonlal opened this issue Jan 13, 2018 · 12 comments

Comments

@shannonlal
Copy link
Contributor

I have been running into some problems with trying to build from source on a Mac. I am 90% of the way done my Athena connection work #261 ;however, this is blocking me from completing my work and creating a pull request. I created a new directory on my Mac and cloned from source:

git clone https://github.com/plotly/falcon-sql-client.git

I am following these instructions (from Contribuing.md )for building from source:

$ yarn install
$ yarn run rebuild:modules:electron
$ rm -rf dist
$ yarn run build
$ yarn start

I am running NodeJS version XXX, yarn version XXX and npm XXX

I have tried rebuilding the project as specified (npm rebuild) and that did not have an effect. This is the error that I am getting:

Uncaught Exception:
Error: The module '/release/falcon-sql-client/node_modules/ibm_db/build/Release/odbc_bindings.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 48. This version of Node.js requires
NODE_MODULE_VERSION 54. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or`npm install`).

Here is an error from the command line that I am getting as well

yarn start
yarn run v1.3.2
$ cross-env NODE_ENV=production electron ./
{ Error: Cannot find module "./build"
    at /Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/backend/main.js:151:16870
    at Object.r.keys (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/backend/main.js:151:16946)
    at t (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/backend/main.js:2:101)
    at Object.i.addProbe.t.fire (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/backend/main.js:151:7114)
    at t (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/backend/main.js:2:101)
    at Object.<anonymous> (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/backend/main.js:2:60994)
    at t (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/backend/main.js:2:101)
    at Object.T (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/backend/main.js:151:295)
    at t (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/backend/main.js:2:101)
    at /Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/backend/main.js:2:451 code: 'MODULE_NOT_FOUND' }
App threw an error during load
Error: The module '/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/node_modules/ibm_db/build/Release/odbc_bindings.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 48. This version of Node.js requires
NODE_MODULE_VERSION 54. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or`npm install`).
@n-riesco
Copy link
Contributor

Just to be sure, could you run yarn run rebuild:modules:electron && yarn start and see if it still fails?

If it fails (and for us to be able to reproduce the error), could post the versions you're using?

$ yarn --version
$ npm --versions

@shannonlal
Copy link
Contributor Author

I tried the instructions and was able to reproduce this but got a slight different error. First off here is the environment variables:

yarn --version : 1.3.2
npm --version: 3.10.10
node -v : v6.11.5

If there is a recommended different versions of any of the above please let me know and I can switch to them and try again.

I am getting a new error now about the refresh interval:

Error: Refresh interval must be at least 60 seconds (supplied 1)

I have included the full stack trace. You will see that there is an issue with a missing "./build" module and a NODE_MODULE_VERSION. I have included the entire stack trace below. As an FYI. I have created a new directory on my mac and cloned directly from the master branch on (https://github.com/plotly/falcon-sql-client).

Any insight is greatly appreciated.

yarn start
yarn run v1.3.2
$ cross-env NODE_ENV=production electron ./
{ Error: Cannot find module "./build"
    at /Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/backend/main.js:151:16870
    at Object.r.keys (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/backend/main.js:151:16946)
    at t (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/backend/main.js:2:101)
    at Object.i.addProbe.t.fire (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/backend/main.js:151:7114)
    at t (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/backend/main.js:2:101)
    at Object.<anonymous> (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/backend/main.js:2:60994)
    at t (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/backend/main.js:2:101)
    at Object.T (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/backend/main.js:151:295)
    at t (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/backend/main.js:2:101)
    at /Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/backend/main.js:2:451 code: 'MODULE_NOT_FOUND' }
Error: The module '/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/node_modules/dtrace-provider/build/Release/DTraceProviderBindings.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 48. This version of Node.js requires
NODE_MODULE_VERSION 54. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or`npm install`).
    at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:173:20)
    at Object.Module._extensions..node (module.js:598:18)
    at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:173:20)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)
    at Module.require (module.js:498:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/node_modules/dtrace-provider/dtrace-provider.js:18:23)
    at Object.<anonymous> (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/node_modules/dtrace-provider/dtrace-provider.js:49:3)
    at Module._compile (module.js:571:32)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)
    at Module.require (module.js:498:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/node_modules/bunyan/lib/bunyan.js:79:18)
    at Object.<anonymous> (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/node_modules/bunyan/lib/bunyan.js:1629:3)
    at Module._compile (module.js:571:32)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32)
App threw an error during load
Error: Refresh interval must be at least 60 seconds (supplied 1)
    at e.value (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/backend/main.js:218:107732)
    at Array.forEach (native)
    at e.value (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/backend/main.js:218:108221)
    at Object.T (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/backend/main.js:151:733)
    at t (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/backend/main.js:2:101)
    at /Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/backend/main.js:2:451
    at Object.<anonymous> (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/backend/main.js:2:462)
    at Object.<anonymous> (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/backend/main.js:297:3)
    at Module._compile (module.js:571:32)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)
    at loadApplicationPackage (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/node_modules/electron/dist/Electron.app/Contents/Resources/default_app.asar/main.js:283:12)
    at Object.<anonymous> (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/node_modules/electron/dist/Electron.app/Contents/Resources/default_app.asar/main.js:325:5)
    at Object.<anonymous> (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/node_modules/electron/dist/Electron.app/Contents/Resources/default_app.asar/main.js:361:3)
    at Module._compile (module.js:571:32)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)
    at Object.<anonymous> (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/node_modules/electron/dist/Electron.app/Contents/Resources/electron.asar/browser/init.js:171:8)

@n-riesco
Copy link
Contributor

I have created a new directory on my mac and cloned directly from the master branch on (https://github.com/plotly/falcon-sql-client).

so you mean that current master doesn't build on your mac?

@n-riesco
Copy link
Contributor

n-riesco commented Jan 14, 2018

oh I see the problem! You need node v6.12 to be able to use the latest electron-builder.

@shannonlal
Copy link
Contributor Author

Thanks. Does it have to be v6.12 or can it be node 7 or 8?

@n-riesco
Copy link
Contributor

Don't know. We only run the tests on node v6.

@n-riesco
Copy link
Contributor

n-riesco commented Jan 14, 2018

@shannonlal I'm not sure this is going to solve your problem.

See here the test failure where I noticed the requirement >=6.11.4. (And https://github.com/electron-userland/electron-builder/blob/a6d2796e3a0086b6105aecb741e6a7c165245e53/packages/electron-builder-lib/package.json#L14).

I see you've got v6.11.5, so in principle you're fine (did you get any warnings when you run yarn install?).

We use TravisCI to build the mac installer and the build is currently green. Does yarn run pack work for you?

@shannonlal
Copy link
Contributor Author

@n-riesco I am still getting the same error. I updated my node to use (v6.12.3).

Here is the latest specs on my environment:
node v6.12.3
npm 3.10.10
yarn v1.3.2
electron-builder 19.46.4

I removed the node_modules directory and then did the following instructions to rebuild everything.

$ yarn install
$ yarn run rebuild:modules:electron
$ rm -rf dist
$ yarn run build
$ yarn start

I still get the same error as mentioned above

Here is what I get when I try running yarn run pack

yarn run pack
yarn run v1.3.2
$ cross-env NODE_ENV=production electron-builder --publish=never
electron-builder 19.46.4
Rebuilding native production dependencies for darwin:x64
Rebuilding native dependency fsevents
Rebuilding native dependency ibm_db
Rebuilding native dependency sqlite3
Packaging for darwin x64 using electron 1.7.8 to release/mac
Downloading tmp-89106-1-SHASUMS256.txt-1.7.8
[============================================>] 100.0% of 2.93 kB (2.93 kB/s)
⚠️  App is not signed: cannot find valid "Developer ID Application" identity or custom non-Apple code signing certificate, see https://electron.build/code-signing

All identities:
  ..... Identity information found
@n-riesco let me know if you need the identities required

....

Building DMG
✨  Done in 121.51s.

I also tried the command you recommended above yarn run rebuild:modules:electron && yarn start and it is still giving me the same issue about the 60 seconds refresh.

I also tried running this in headless mode; however, got the same issue. I ran the following command to get the headless build working:

$ yarn run rebuild:modules:node
$ yarn run heroku-postbuild
$ yarn run start-headless

Here is the error code when I try to run the headless mode

Error: Refresh interval must be at least 60 seconds (supplied 1)
    at e.value (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/dist/headless-bundle.js:218:107732)
    at Array.forEach (native)
    at e.value (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/dist/headless-bundle.js:218:108221)
    at Object.<anonymous> (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/dist/headless-bundle.js:151:543)
    at t (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/dist/headless-bundle.js:2:101)
    at /Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/dist/headless-bundle.js:2:451
    at Object.<anonymous> (/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/dist/headless-bundle.js:2:462)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.runMain (module.js:604:10)
    at run (bootstrap_node.js:383:7)
    at startup (bootstrap_node.js:149:9)
    at bootstrap_node.js:496:3
error Command failed with exit code 1.

Any suggestions or things to try would be greatly appreciated.

@shannonlal
Copy link
Contributor Author

Just an update to your previous question about what happens when you do a yarn install

Here is the output. It looks like there are no errors or warnings:

yarn install
yarn install v1.3.2
[1/5] 🔍  Validating package.json...
[2/5] 🔍  Resolving packages...
[3/5] 🚚  Fetching packages...
info [email protected]: The platform "darwin" is incompatible with this module.
info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
info [email protected]: The platform "darwin" is incompatible with this module.
info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
[4/5] 🔗  Linking dependencies...
warning "redux-devtools-dock-monitor > [email protected]" has unmet peer dependency "babel-runtime@^6.3.13".
[5/5] 📃  Building fresh packages...
✨  Done in 92.79s.

Here is what happens when I run yarn run rebuild:modules:electron

yarn run rebuild:modules:electron
yarn run v1.3.2
$ cross-env FSEVENTS_BUILD_FROM_SOURCE=true node scripts/rebuild-modules.js --electron
>> /Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/node_modules/.bin/electron-builder install-app-deps
electron-builder 19.46.4
Rebuilding native production dependencies for darwin:x64
Rebuilding native dependency fsevents
Rebuilding native dependency ibm_db
Rebuilding native dependency sqlite3
✨  Done in 74.04s.

Here is what happens when I run yarn run build

WARNING in ./node_modules/encoding/lib/iconv-loader.js
9:12-34 Critical dependency: the request of a dependency is an expression
 @ ./node_modules/encoding/lib/iconv-loader.js
 @ ./node_modules/encoding/lib/encoding.js
 @ ./node_modules/node-fetch/lib/body.js
 @ ./node_modules/node-fetch/index.js
 @ ./backend/routes.js
 @ ./backend/main.development.js

WARNING in ./node_modules/ws/lib/BufferUtil.js
Module not found: Error: Can't resolve '../build/Release/bufferutil' in '/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/node_modules/ws/lib'
 @ ./node_modules/ws/lib/BufferUtil.js 8:19-57
 @ ./node_modules/ws/lib/Sender.js
 @ ./node_modules/ws/index.js
 @ ./node_modules/thrift/lib/nodejs/lib/thrift/ws_connection.js
 @ ./node_modules/thrift/lib/nodejs/lib/thrift/index.js
 @ ./node_modules/node-impala/lib/node-impala.js
 @ ./node_modules/node-impala/index.js
 @ ./backend/persistent/datastores/impala.js
 @ ./backend/persistent/datastores/Datastores.js
 @ ./backend/routes.js
 @ ./backend/main.development.js

WARNING in ./node_modules/ws/lib/Validation.js
Module not found: Error: Can't resolve '../build/Release/validation' in '/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/node_modules/ws/lib'
 @ ./node_modules/ws/lib/Validation.js 8:19-57
 @ ./node_modules/ws/lib/Receiver.js
 @ ./node_modules/ws/index.js
 @ ./node_modules/thrift/lib/nodejs/lib/thrift/ws_connection.js
 @ ./node_modules/thrift/lib/nodejs/lib/thrift/index.js
 @ ./node_modules/node-impala/lib/node-impala.js
 @ ./node_modules/node-impala/index.js
 @ ./backend/persistent/datastores/impala.js
 @ ./backend/persistent/datastores/Datastores.js
 @ ./backend/routes.js
 @ ./backend/main.development.js

WARNING in ./node_modules/ws/lib/BufferUtil.js
Module not found: Error: Can't resolve '../build/default/bufferutil' in '/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/node_modules/ws/lib'
 @ ./node_modules/ws/lib/BufferUtil.js 10:19-57
 @ ./node_modules/ws/lib/Sender.js
 @ ./node_modules/ws/index.js
 @ ./node_modules/thrift/lib/nodejs/lib/thrift/ws_connection.js
 @ ./node_modules/thrift/lib/nodejs/lib/thrift/index.js
 @ ./node_modules/node-impala/lib/node-impala.js
 @ ./node_modules/node-impala/index.js
 @ ./backend/persistent/datastores/impala.js
 @ ./backend/persistent/datastores/Datastores.js
 @ ./backend/routes.js
 @ ./backend/main.development.js

WARNING in ./node_modules/ws/lib/Validation.js
Module not found: Error: Can't resolve '../build/default/validation' in '/Users/shannonlal/Personel/Technology/plot.ly/release/falcon-sql-client/node_modules/ws/lib'
 @ ./node_modules/ws/lib/Validation.js 10:19-57
 @ ./node_modules/ws/lib/Receiver.js
 @ ./node_modules/ws/index.js
 @ ./node_modules/thrift/lib/nodejs/lib/thrift/ws_connection.js
 @ ./node_modules/thrift/lib/nodejs/lib/thrift/index.js
 @ ./node_modules/node-impala/lib/node-impala.js
 @ ./node_modules/node-impala/index.js
 @ ./backend/persistent/datastores/impala.js
 @ ./backend/persistent/datastores/Datastores.js
 @ ./backend/routes.js
 @ ./backend/main.development.js

@n-riesco
Copy link
Contributor

The snippets of output you've posted look OK (please, could you double-check that they are the same warnings we get on TravisCI?).

@tarzzz are you able to reproduce this issue on your mac?

@n-riesco
Copy link
Contributor

@shannonlal Your build of the headless app doesn't throw the NODE_MODULE_VERSION error. This suggests there is another problem. The error message Refresh interval must be at least 60 seconds (supplied 1) suggests a problem with your configuration in ~/.plotly/connector/.

Here's something you could try:

$ rm -rf ~/.plotly/connector/
$ git clone https://github.com/plotly/falcon-sql-client.git
$ cd falcon-sql-client
$ yarn install
$ yarn run heroku-postbuild
$ yarn run start-headless

And open http://localhost:9494

If this works, then the corrupted configuration was the cause of the problem with the headless app.

This wouldn't explain the NODE_MODULE_VERSION error, but it'd worth double-checking by interrupting yarn run start-headless and running:

$ yarn run rebuild:modules:electron
$ yarn run build
$ yarn run start

@shannonlal
Copy link
Contributor Author

@n-riesco looks like it was the corrupted ~/.plotly/connector/ . I was able to get the headless mode to come up and get the application to the electron app to come back up. I will update the CONTRIBUTING.MD file to include the information on which version of nodejs and if the users run into any problems they can delete the ploty directory.

Thanks again for all your help

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants