Repository navigation
Upgrade NAN for Node 4.0.0 #180
Description
Activity
@kkoopa - is this something you can help with? If not, is there an upgrade guide floating around, or should I work my way through the NAN changelog?
Is it still going to be maintained? Would it not be better to write something on the javascript level that uses the existing code for versions less than 0.12, and the revised vm module of Node for everything later.
Upgrading to NAN 2 wouldn't be hard, I can do it in ten minutes, but is it worth it?
The problem is there's no way to write in package.json "install this module only in Node<4.0.0". You can declare it as an optional dependency but it will then try to get compiled in newer Nodes & fail; everything should work afterwards but the installation shouldn't have to try to compile things that are not needed, burning CPU cycles & printing confusing error-not-error messages.
Ah, I had not thought about that, but it is easily avoidable. Hide everything behind an ifdef and make it compile nothing.
Adding to the list: nodejs/node#2798.
It might make sense to use the built-in vm module already from 0.12 up, since @domenic based the rewrite on Contextify. I would think many bugs that were in Contextify have been fixed in the vm module in that process. Essentially, the C++ code of Contextify is only necessary for Node 0.10 and older.
+1
+1 actually one of our projects completely won't work on node 4.x just because of this...
sorry, I'm blocked on one failure in #181 and don't have time to figure it out right now, happy for someone else to take my code if they can work it out
+1 It's affects a lot of packages i need since upgrading to node 4.x. It appears Browser Sync and a few of its plugins require it.
+1 Breaks lots of things
Using node 4.1.0
$ npm install contextify
contextify@0.1.14 install /Users/workspaces/soundselect/node_modules/contextify
node-gyp rebuildCXX(target) Release/obj.target/contextify/src/contextify.o
In file included from ../src/contextify.cc:3:
../node_modules/nan/nan.h:261:25: error: redefinition of '_NanEnsureLocal'
NAN_INLINE v8::Local _NanEnsureLocal(v8::Local val) {
^
../node_modules/nan/nan.h:256:25: note: previous definition is here
NAN_INLINE v8::Local _NanEnsureLocal(v8::Handle val) {
^
../node_modules/nan/nan.h:661:13: error: no member named 'smalloc' in namespace 'node'
, node::smalloc::FreeCallback callback
~~~~~~^
../node_modules/nan/nan.h:672:12: error: no matching function for call to 'New'
return node::Buffer::New(v8::Isolate::GetCurrent(), data, size);
^~~~~~~~~~~~~~~~~
/Users/justinthomas/.node-gyp/4.1.0/include/node/node_buffer.h:31:40: note: candidate function not viable: no known conversion from
'uint32_t' (aka 'unsigned int') to 'enum encoding' for 3rd argument
NODE_EXTERN v8::MaybeLocalv8::Object New(v8::Isolate* isolate,If you're desperate then you can
npm i 'contextify@rvagg/contextify#nan2'but see #181 for the context (har har) on that. It should be fine on 0.12+ but the fact that there's a weird hold-up on 0.10 suggests that all may not be quite right.28 remaining items
+1
+111111111111111111111111111111111111111
+1
+1
+1
+1
+1
+1
+1
This fixed it for me for now - thanks @sirbrillig: sirbrillig/jsdom@b30bc08
Needs a few more +1s
(Fixed in 0.1.15)
+thanks