user994165 user994165 - 16 days ago 4
Node.js Question

Call to 'node findJavaHome.js' returned exit status 1. while trying to load binding.gyp

I keep getting this error when trying to install java on node "npm install -g java".

[node-java] Error: not found: javac
gyp: Call to 'node findJavaHome.js' returned exit status 1 while in binding.gyp. while trying to load binding.gyp
gyp ERR! configure error
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack at ChildProcess.onCpExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:305:16)
gyp ERR! stack at emitTwo (events.js:87:13)
gyp ERR! stack at ChildProcess.emit (events.js:172:7)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Linux 3.13.0-73-generic
gyp ERR! command "/usr/bin/nodejs" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /usr/lib/node_modules/java
gyp ERR! node -v v4.4.1
gyp ERR! node-gyp -v v3.3.0
gyp ERR! not ok
npm ERR! Linux 3.13.0-73-generic
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install" "-g" "java"
npm ERR! node v4.4.1
npm ERR! npm v2.14.20
npm ERR! code ELIFECYCLE


Some commands I tried:

>which java
/opt/java/jdk1.7.0_79/bin/java

>$JAVA_HOME
bash: /opt/java/jdk1.7.0_79

>javac
Usage: javac <options> <source files>...


In the node-java package, when I execute: "node findJavaHome.js" I get "/opt/java/jdk1.7.0_79"

Answer

It looks like this is caused by using "sudo" which by default does not keep the environment of my user, so my JAVA_HOME is not read. This command works: "sudo -E npm install".