Skip to content

Issues building/testing against Node 6 #317

@CraZySacX

Description

@CraZySacX

I maintain node-jdbc which depends on node-java. I was taking a look at Node 6 and ran into some trouble building node-java. nan.h had some void declarations.


> java@0.6.1 install /home/jozias/projects/node-java
> node-gyp rebuild

make: Entering directory '/home/jozias/projects/node-java/build'
  CXX(target) Release/obj.target/nodejavabridge_bindings/src/java.o
In file included from ../src/java.h:9:0,
                 from ../src/java.cpp:1:
../node_modules/nan/nan.h:590:20: error: variable or field ‘AddGCEpilogueCallback’ declared void
       v8::Isolate::GCEpilogueCallback callback
                    ^
../node_modules/nan/nan.h:590:7: error: ‘GCEpilogueCallback’ is not a member of ‘v8::Isolate’
       v8::Isolate::GCEpilogueCallback callback
       ^
../node_modules/nan/nan.h:591:18: error: expected primary-expression before ‘gc_type_filter’
     , v8::GCType gc_type_filter = v8::kGCTypeAll) {
                  ^
../node_modules/nan/nan.h:596:20: error: variable or field ‘RemoveGCEpilogueCallback’ declared void
       v8::Isolate::GCEpilogueCallback callback) {
                    ^
../node_modules/nan/nan.h:596:7: error: ‘GCEpilogueCallback’ is not a member of ‘v8::Isolate’
       v8::Isolate::GCEpilogueCallback callback) {
       ^
../node_modules/nan/nan.h:601:20: error: variable or field ‘AddGCPrologueCallback’ declared void
       v8::Isolate::GCPrologueCallback callback
                    ^
../node_modules/nan/nan.h:601:7: error: ‘GCPrologueCallback’ is not a member of ‘v8::Isolate’
       v8::Isolate::GCPrologueCallback callback
       ^
../node_modules/nan/nan.h:602:18: error: expected primary-expression before ‘gc_type_filter’
     , v8::GCType gc_type_filter = v8::kGCTypeAll) {
                  ^
../node_modules/nan/nan.h:607:20: error: variable or field ‘RemoveGCPrologueCallback’ declared void
       v8::Isolate::GCPrologueCallback callback) {
                    ^
../node_modules/nan/nan.h:607:7: error: ‘GCPrologueCallback’ is not a member of ‘v8::Isolate’
       v8::Isolate::GCPrologueCallback callback) {
       ^
nodejavabridge_bindings.target.mk:99: recipe for target 'Release/obj.target/nodejavabridge_bindings/src/java.o' failed
make: *** [Release/obj.target/nodejavabridge_bindings/src/java.o] Error 1
make: Leaving directory '/home/jozias/projects/node-java/build'
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:276:23)
gyp ERR! stack     at emitTwo (events.js:106:13)
gyp ERR! stack     at ChildProcess.emit (events.js:191:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:204:12)
gyp ERR! System Linux 4.5.2-1-ARCH
gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/jozias/projects/node-java
gyp ERR! node -v v6.0.0
gyp ERR! node-gyp -v v3.3.1
gyp ERR! not ok 

npm ERR! Linux 4.5.2-1-ARCH
npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "i"
npm ERR! node v6.0.0
npm ERR! npm  v3.8.7
npm ERR! code ELIFECYCLE
npm ERR! java@0.6.1 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the java@0.6.1 install script 'node-gyp rebuild'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the java package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs java
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls java
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/jozias/projects/node-java/npm-debug.log

I forked node-java, updated nan to the latest version (2.3.1) and was able to build. However, when running npm test I got the following output (in a gist, it's long) https://gist.github.com/CraZySacX/28b61e294574b5af167295fdf0a2e16b

Looks like v8 deprecates v8::ObjectTemplate::Set(). I'm not sure why this is causing the stacktrace or test failures. Did a bit of digging and it looks like javaObject.cpp is the place to fix this, but I know next to nothing about the v8 API. Willing to submit a PR if someone points me in the right direction.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions