HumbleSoftware / js-imagediff

JavaScript / Canvas based image diff utility with Jasmine matchers for testing canvas.
http://humblesoftware.github.com/js-imagediff/
MIT License
788 stars 99 forks source link

Installation error with node v8.9.3 #60

Open jwir3 opened 6 years ago

jwir3 commented 6 years ago

Running on a macbook pro with Sierra (10.12.6):

$ npm install -g imagediff

Result:

../../nan/nan.h:342:68: error: too many arguments to function call, expected at most 2, have 4
    return v8::Signature::New(v8::Isolate::GetCurrent(), receiver, argc, argv);
           ~~~~~~~~~~~~~~~~~~                                      ^~~~~~~~~~
/Users/scottj/.node-gyp/8.9.3/include/node/v8.h:5871:3: note: 'New' declared here
  static Local<Signature> New(
  ^
In file included from ../src/Canvas.cc:7:
In file included from ../src/Canvas.h:22:
../../nan/nan.h:397:32: warning: 'CompileUnbound' is deprecated [-Wdeprecated-declarations]
    return v8::ScriptCompiler::CompileUnbound(
                               ^
/Users/scottj/.node-gyp/8.9.3/include/node/v8.h:1403:10: note: 'CompileUnbound' has been explicitly marked deprecated here
  static V8_DEPRECATED("Use maybe version",
         ^
/Users/scottj/.node-gyp/8.9.3/include/node/v8config.h:321:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated))
                            ^
In file included from ../src/Canvas.cc:7:
In file included from ../src/Canvas.h:22:
../../nan/nan.h:406:32: warning: 'CompileUnbound' is deprecated [-Wdeprecated-declarations]
    return v8::ScriptCompiler::CompileUnbound(
                               ^
/Users/scottj/.node-gyp/8.9.3/include/node/v8.h:1403:10: note: 'CompileUnbound' has been explicitly marked deprecated here
  static V8_DEPRECATED("Use maybe version",
         ^
/Users/scottj/.node-gyp/8.9.3/include/node/v8config.h:321:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated))
                            ^
In file included from ../src/Canvas.cc:7:
In file included from ../src/Canvas.h:22:
../../nan/nan.h:412:31: warning: 'New' is deprecated [-Wdeprecated-declarations]
    return v8::BooleanObject::New(value).As<v8::BooleanObject>();
                              ^
/Users/scottj/.node-gyp/8.9.3/include/node/v8.h:4793:3: note: 'New' has been explicitly marked deprecated here
  V8_DEPRECATED("Pass an isolate", static Local<Value> New(bool value));
  ^
/Users/scottj/.node-gyp/8.9.3/include/node/v8config.h:321:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated))
                            ^
In file included from ../src/Canvas.cc:7:
In file included from ../src/Canvas.h:22:
../../nan/nan.h:424:3: error: redefinition of 'NanNew'
  NanNew<v8::StringObject, v8::Handle<v8::String> >(
  ^
../../nan/nan.h:417:3: note: previous definition is here
  NanNew<v8::StringObject, v8::Local<v8::String> >(
  ^
../../nan/nan.h:442:36: error: redefinition of 'NanNew'
  NAN_INLINE v8::Local<v8::RegExp> NanNew(
                                   ^
../../nan/nan.h:436:36: note: previous definition is here
  NAN_INLINE v8::Local<v8::RegExp> NanNew(
                                   ^
../../nan/nan.h:454:36: error: redefinition of 'NanNew'
  NAN_INLINE v8::Local<v8::RegExp> NanNew(
                                   ^
../../nan/nan.h:448:36: note: previous definition is here
  NAN_INLINE v8::Local<v8::RegExp> NanNew(
                                   ^
../../nan/nan.h:462:42: warning: 'ToUint32' is deprecated [-Wdeprecated-declarations]
        v8::Isolate::GetCurrent(), val)->ToUint32();
                                         ^
/Users/scottj/.node-gyp/8.9.3/include/node/v8.h:2330:10: note: 'ToUint32' has been explicitly marked deprecated here
  inline V8_DEPRECATED("Use maybe version", Local<Uint32> ToUint32() const);
         ^
/Users/scottj/.node-gyp/8.9.3/include/node/v8config.h:321:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated))
                            ^
In file included from ../src/Canvas.cc:7:
In file included from ../src/Canvas.h:22:
../../nan/nan.h:468:42: warning: 'ToUint32' is deprecated [-Wdeprecated-declarations]
        v8::Isolate::GetCurrent(), val)->ToUint32();
                                         ^
/Users/scottj/.node-gyp/8.9.3/include/node/v8.h:2330:10: note: 'ToUint32' has been explicitly marked deprecated here
  inline V8_DEPRECATED("Use maybe version", Local<Uint32> ToUint32() const);
         ^
/Users/scottj/.node-gyp/8.9.3/include/node/v8config.h:321:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated))
                            ^
In file included from ../src/Canvas.cc:7:
In file included from ../src/Canvas.h:22:
../../nan/nan.h:473:60: warning: 'ToInt32' is deprecated [-Wdeprecated-declarations]
    return v8::Int32::New(v8::Isolate::GetCurrent(), val)->ToInt32();
                                                           ^
/Users/scottj/.node-gyp/8.9.3/include/node/v8.h:2331:10: note: 'ToInt32' has been explicitly marked deprecated here
  inline V8_DEPRECATED("Use maybe version", Local<Int32> ToInt32() const);
         ^
/Users/scottj/.node-gyp/8.9.3/include/node/v8config.h:321:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated))
                            ^
In file included from ../src/Canvas.cc:7:
In file included from ../src/Canvas.h:22:
../../nan/nan.h:478:60: warning: 'ToInt32' is deprecated [-Wdeprecated-declarations]
    return v8::Int32::New(v8::Isolate::GetCurrent(), val)->ToInt32();
                                                           ^
/Users/scottj/.node-gyp/8.9.3/include/node/v8.h:2331:10: note: 'ToInt32' has been explicitly marked deprecated here
  inline V8_DEPRECATED("Use maybe version", Local<Int32> ToInt32() const);
         ^
/Users/scottj/.node-gyp/8.9.3/include/node/v8config.h:321:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated))
                            ^
In file included from ../src/Canvas.cc:7:
In file included from ../src/Canvas.h:22:
../../nan/nan.h:518:24: warning: 'NewFromOneByte' is deprecated [-Wdeprecated-declarations]
    return v8::String::NewFromOneByte(
                       ^
/Users/scottj/.node-gyp/8.9.3/include/node/v8.h:2668:10: note: 'NewFromOneByte' has been explicitly marked deprecated here
  static V8_DEPRECATED(
         ^
/Users/scottj/.node-gyp/8.9.3/include/node/v8config.h:321:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated))
                            ^
In file included from ../src/Canvas.cc:7:
In file included from ../src/Canvas.h:22:
../../nan/nan.h:529:24: warning: 'NewFromOneByte' is deprecated [-Wdeprecated-declarations]
    return v8::String::NewFromOneByte(
                       ^
/Users/scottj/.node-gyp/8.9.3/include/node/v8.h:2668:10: note: 'NewFromOneByte' has been explicitly marked deprecated here
  static V8_DEPRECATED(
         ^
/Users/scottj/.node-gyp/8.9.3/include/node/v8config.h:321:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated))
                            ^
In file included from ../src/Canvas.cc:7:
In file included from ../src/Canvas.h:22:
../../nan/nan.h:538:24: warning: 'NewFromOneByte' is deprecated [-Wdeprecated-declarations]
    return v8::String::NewFromOneByte(v8::Isolate::GetCurrent(), arg);
                       ^
/Users/scottj/.node-gyp/8.9.3/include/node/v8.h:2668:10: note: 'NewFromOneByte' has been explicitly marked deprecated here
  static V8_DEPRECATED(
         ^
/Users/scottj/.node-gyp/8.9.3/include/node/v8config.h:321:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated))
                            ^
In file included from ../src/Canvas.cc:7:
In file included from ../src/Canvas.h:22:
../../nan/nan.h:544:24: warning: 'NewFromOneByte' is deprecated [-Wdeprecated-declarations]
    return v8::String::NewFromOneByte(v8::Isolate::GetCurrent(), arg);
                       ^
/Users/scottj/.node-gyp/8.9.3/include/node/v8.h:2668:10: note: 'NewFromOneByte' has been explicitly marked deprecated here
  static V8_DEPRECATED(
         ^
/Users/scottj/.node-gyp/8.9.3/include/node/v8config.h:321:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated))
                            ^
In file included from ../src/Canvas.cc:7:
In file included from ../src/Canvas.h:22:
../../nan/nan.h:619:24: warning: 'NewExternal' is deprecated [-Wdeprecated-declarations]
    return v8::String::NewExternal(v8::Isolate::GetCurrent(), resource);
                       ^
/Users/scottj/.node-gyp/8.9.3/include/node/v8.h:2707:10: note: 'NewExternal' has been explicitly marked deprecated here
  static V8_DEPRECATED("Use maybe version",
         ^
/Users/scottj/.node-gyp/8.9.3/include/node/v8config.h:321:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated))
                            ^
In file included from ../src/Canvas.cc:7:
In file included from ../src/Canvas.h:22:
../../nan/nan.h:623:19: error: no type named 'ExternalAsciiStringResource' in 'v8::String'; did you mean 'ExternalStringResource'?
      v8::String::ExternalAsciiStringResource *resource) {
      ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
                  ExternalStringResource
/Users/scottj/.node-gyp/8.9.3/include/node/v8.h:2577:19: note: 'ExternalStringResource' declared here
  class V8_EXPORT ExternalStringResource
                  ^
In file included from ../src/Canvas.cc:7:
In file included from ../src/Canvas.h:22:
../../nan/nan.h:622:36: error: redefinition of 'NanNew'
  NAN_INLINE v8::Local<v8::String> NanNew(
                                   ^
../../nan/nan.h:617:36: note: previous definition is here
  NAN_INLINE v8::Local<v8::String> NanNew(
                                   ^
../../nan/nan.h:624:24: warning: 'NewExternal' is deprecated [-Wdeprecated-declarations]
    return v8::String::NewExternal(v8::Isolate::GetCurrent(), resource);
                       ^
/Users/scottj/.node-gyp/8.9.3/include/node/v8.h:2707:10: note: 'NewExternal' has been explicitly marked deprecated here
  static V8_DEPRECATED("Use maybe version",
         ^
/Users/scottj/.node-gyp/8.9.3/include/node/v8config.h:321:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated))
                            ^
In file included from ../src/Canvas.cc:7:
In file included from ../src/Canvas.h:22:
../../nan/nan.h:637:27: error: redefinition of '_NanEscapeScopeHelper'
  NAN_INLINE v8::Local<T> _NanEscapeScopeHelper(v8::Local<T> val) {
                          ^
../../nan/nan.h:632:27: note: previous definition is here
  NAN_INLINE v8::Local<T> _NanEscapeScopeHelper(v8::Handle<T> val) {
                          ^
../../nan/nan.h:653:12: error: no matching function for call to '_NanEscapeScopeHelper'
    return NanEscapeScope(NanNew(v8::Undefined(v8::Isolate::GetCurrent())));
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:641:43: note: expanded from macro 'NanEscapeScope'
# define NanEscapeScope(val) scope.Escape(_NanEscapeScopeHelper(val))
                                          ^~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:637:27: note: candidate template ignored: substitution failure [with T = v8::Primitive]
  NAN_INLINE v8::Local<T> _NanEscapeScopeHelper(v8::Local<T> val) {
                          ^
../../nan/nan.h:658:12: error: no matching function for call to '_NanEscapeScopeHelper'
    return NanEscapeScope(NanNew(v8::Null(v8::Isolate::GetCurrent())));
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:641:43: note: expanded from macro 'NanEscapeScope'
# define NanEscapeScope(val) scope.Escape(_NanEscapeScopeHelper(val))
                                          ^~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:637:27: note: candidate template ignored: substitution failure [with T = v8::Primitive]
  NAN_INLINE v8::Local<T> _NanEscapeScopeHelper(v8::Local<T> val) {
                          ^
../../nan/nan.h:663:12: error: no matching function for call to '_NanEscapeScopeHelper'
    return NanEscapeScope(NanNew(v8::True(v8::Isolate::GetCurrent())));
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:641:43: note: expanded from macro 'NanEscapeScope'
# define NanEscapeScope(val) scope.Escape(_NanEscapeScopeHelper(val))
                                          ^~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:637:27: note: candidate template ignored: substitution failure [with T = v8::Boolean]
  NAN_INLINE v8::Local<T> _NanEscapeScopeHelper(v8::Local<T> val) {
                          ^
../../nan/nan.h:668:12: error: no matching function for call to '_NanEscapeScopeHelper'
    return NanEscapeScope(NanNew(v8::False(v8::Isolate::GetCurrent())));
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:641:43: note: expanded from macro 'NanEscapeScope'
# define NanEscapeScope(val) scope.Escape(_NanEscapeScopeHelper(val))
                                          ^~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:637:27: note: candidate template ignored: substitution failure [with T = v8::Boolean]
  NAN_INLINE v8::Local<T> _NanEscapeScopeHelper(v8::Local<T> val) {
                          ^
../../nan/nan.h:701:20: error: no type named 'GCEpilogueCallback' in 'v8::Isolate'
      v8::Isolate::GCEpilogueCallback callback
      ~~~~~~~~~~~~~^
../../nan/nan.h:707:20: error: no type named 'GCEpilogueCallback' in 'v8::Isolate'
      v8::Isolate::GCEpilogueCallback callback) {
      ~~~~~~~~~~~~~^
../../nan/nan.h:712:20: error: no type named 'GCPrologueCallback' in 'v8::Isolate'
      v8::Isolate::GCPrologueCallback callback
      ~~~~~~~~~~~~~^
../../nan/nan.h:718:20: error: no type named 'GCPrologueCallback' in 'v8::Isolate'
      v8::Isolate::GCPrologueCallback callback) {
      ~~~~~~~~~~~~~^
../../nan/nan.h:797:15: error: no type named 'WeakCallbackData' in namespace 'v8'
    const v8::WeakCallbackData<T, _NanWeakCallbackInfo<T, P> > &data) {
          ~~~~^
../../nan/nan.h:797:31: error: expected ')'
    const v8::WeakCallbackData<T, _NanWeakCallbackInfo<T, P> > &data) {
                              ^
../../nan/nan.h:796:41: note: to match this '('
  static void _NanWeakCallbackDispatcher(
                                        ^
../../nan/nan.h:798:42: error: use of undeclared identifier 'data'
      _NanWeakCallbackInfo<T, P> *info = data.GetParameter();
                                         ^
../../nan/nan.h:889:13: error: no member named 'smalloc' in namespace 'node'
    , node::smalloc::FreeCallback callback
      ~~~~~~^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
13 warnings and 20 errors generated.
make: *** [Release/obj.target/canvas/src/Canvas.o] Error 1
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/Users/scottj/.nvm/versions/node/v8.9.3/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:258:23)
gyp ERR! stack     at emitTwo (events.js:126:13)
gyp ERR! stack     at ChildProcess.emit (events.js:214:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:198:12)
gyp ERR! System Darwin 16.7.0
gyp ERR! command "/Users/scottj/.nvm/versions/node/v8.9.3/bin/node" "/Users/scottj/.nvm/versions/node/v8.9.3/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /Users/scottj/.nvm/versions/node/v8.9.3/lib/node_modules/imagediff/node_modules/canvas
gyp ERR! node -v v8.9.3
gyp ERR! node-gyp -v v3.6.2
gyp ERR! not ok
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: canvas@1.1.6 (node_modules/imagediff/node_modules/canvas):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: canvas@1.1.6 install: `node-gyp rebuild`
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1

$ nvm list

Result:

        v6.11.2
         v7.9.0
         v8.4.0
->       v8.9.3
         v9.0.0
default -> v6.11.2
node -> stable (-> v9.0.0) (default)
stable -> 9.0 (-> v9.0.0) (default)
iojs -> N/A (default)
lts/* -> lts/carbon (-> v8.9.3)
lts/argon -> v4.8.7 (-> N/A)
lts/boron -> v6.12.2 (-> N/A)
lts/carbon -> v8.9.3

Note that if I change back to v6.11.2 (the previous version I was using, before attempting to resolve this issue with a newer node module), I get the following error instead:

$ npm install --save-dev imagediff

> canvas@1.1.6 install /Users/scottj/Source/loop-renderer/node_modules/canvas
> node-gyp rebuild

xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance

xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance

  SOLINK_MODULE(target) Release/canvas-postbuild.node
clang: warning: libstdc++ is deprecated; move to libc++ with a minimum deployment target of OS X 10.9 [-Wdeprecated]
  CXX(target) Release/obj.target/canvas/src/Canvas.o
In file included from ../src/Canvas.cc:7:
In file included from ../src/Canvas.h:22:
../../nan/nan.h:342:68: error: too many arguments to function call, expected at most 2, have 4
    return v8::Signature::New(v8::Isolate::GetCurrent(), receiver, argc, argv);
           ~~~~~~~~~~~~~~~~~~                                      ^~~~~~~~~~
/Users/scottj/.node-gyp/6.11.2/include/node/v8.h:4834:3: note: 'New' declared here
  static Local<Signature> New(
  ^
In file included from ../src/Canvas.cc:7:
In file included from ../src/Canvas.h:22:
../../nan/nan.h:397:32: warning: 'CompileUnbound' is deprecated [-Wdeprecated-declarations]
    return v8::ScriptCompiler::CompileUnbound(
                               ^
/Users/scottj/.node-gyp/6.11.2/include/node/v8.h:1333:10: note: 'CompileUnbound' has been explicitly marked deprecated here
  static V8_DEPRECATED("Use maybe version",
         ^
/Users/scottj/.node-gyp/6.11.2/include/node/v8config.h:336:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated))
                            ^
In file included from ../src/Canvas.cc:7:
In file included from ../src/Canvas.h:22:
../../nan/nan.h:406:32: warning: 'CompileUnbound' is deprecated [-Wdeprecated-declarations]
    return v8::ScriptCompiler::CompileUnbound(
                               ^
/Users/scottj/.node-gyp/6.11.2/include/node/v8.h:1333:10: note: 'CompileUnbound' has been explicitly marked deprecated here
  static V8_DEPRECATED("Use maybe version",
         ^
/Users/scottj/.node-gyp/6.11.2/include/node/v8config.h:336:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated))
                            ^
In file included from ../src/Canvas.cc:7:
In file included from ../src/Canvas.h:22:
../../nan/nan.h:412:31: warning: 'New' is deprecated [-Wdeprecated-declarations]
    return v8::BooleanObject::New(value).As<v8::BooleanObject>();
                              ^
/Users/scottj/.node-gyp/6.11.2/include/node/v8.h:4009:3: note: 'New' has been explicitly marked deprecated here
  V8_DEPRECATED("Pass an isolate", static Local<Value> New(bool value));
  ^
/Users/scottj/.node-gyp/6.11.2/include/node/v8config.h:336:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated))
                            ^
In file included from ../src/Canvas.cc:7:
In file included from ../src/Canvas.h:22:
../../nan/nan.h:424:3: error: redefinition of 'NanNew'
  NanNew<v8::StringObject, v8::Handle<v8::String> >(
  ^
../../nan/nan.h:417:3: note: previous definition is here
  NanNew<v8::StringObject, v8::Local<v8::String> >(
  ^
../../nan/nan.h:442:36: error: redefinition of 'NanNew'
  NAN_INLINE v8::Local<v8::RegExp> NanNew(
                                   ^
../../nan/nan.h:436:36: note: previous definition is here
  NAN_INLINE v8::Local<v8::RegExp> NanNew(
                                   ^
../../nan/nan.h:454:36: error: redefinition of 'NanNew'
  NAN_INLINE v8::Local<v8::RegExp> NanNew(
                                   ^
../../nan/nan.h:448:36: note: previous definition is here
  NAN_INLINE v8::Local<v8::RegExp> NanNew(
                                   ^
../../nan/nan.h:462:42: warning: 'ToUint32' is deprecated [-Wdeprecated-declarations]
        v8::Isolate::GetCurrent(), val)->ToUint32();
                                         ^
/Users/scottj/.node-gyp/6.11.2/include/node/v8.h:2019:10: note: 'ToUint32' has been explicitly marked deprecated here
  inline V8_DEPRECATED("Use maybe version", Local<Uint32> ToUint32() const);
         ^
/Users/scottj/.node-gyp/6.11.2/include/node/v8config.h:336:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated))
                            ^
In file included from ../src/Canvas.cc:7:
In file included from ../src/Canvas.h:22:
../../nan/nan.h:468:42: warning: 'ToUint32' is deprecated [-Wdeprecated-declarations]
        v8::Isolate::GetCurrent(), val)->ToUint32();
                                         ^
/Users/scottj/.node-gyp/6.11.2/include/node/v8.h:2019:10: note: 'ToUint32' has been explicitly marked deprecated here
  inline V8_DEPRECATED("Use maybe version", Local<Uint32> ToUint32() const);
         ^
/Users/scottj/.node-gyp/6.11.2/include/node/v8config.h:336:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated))
                            ^
In file included from ../src/Canvas.cc:7:
In file included from ../src/Canvas.h:22:
../../nan/nan.h:473:60: warning: 'ToInt32' is deprecated [-Wdeprecated-declarations]
    return v8::Int32::New(v8::Isolate::GetCurrent(), val)->ToInt32();
                                                           ^
/Users/scottj/.node-gyp/6.11.2/include/node/v8.h:2020:10: note: 'ToInt32' has been explicitly marked deprecated here
  inline V8_DEPRECATED("Use maybe version", Local<Int32> ToInt32() const);
         ^
/Users/scottj/.node-gyp/6.11.2/include/node/v8config.h:336:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated))
                            ^
In file included from ../src/Canvas.cc:7:
In file included from ../src/Canvas.h:22:
../../nan/nan.h:478:60: warning: 'ToInt32' is deprecated [-Wdeprecated-declarations]
    return v8::Int32::New(v8::Isolate::GetCurrent(), val)->ToInt32();
                                                           ^
/Users/scottj/.node-gyp/6.11.2/include/node/v8.h:2020:10: note: 'ToInt32' has been explicitly marked deprecated here
  inline V8_DEPRECATED("Use maybe version", Local<Int32> ToInt32() const);
         ^
/Users/scottj/.node-gyp/6.11.2/include/node/v8config.h:336:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated))
                            ^
In file included from ../src/Canvas.cc:7:
In file included from ../src/Canvas.h:22:
../../nan/nan.h:518:24: warning: 'NewFromOneByte' is deprecated [-Wdeprecated-declarations]
    return v8::String::NewFromOneByte(
                       ^
/Users/scottj/.node-gyp/6.11.2/include/node/v8.h:2332:10: note: 'NewFromOneByte' has been explicitly marked deprecated here
  static V8_DEPRECATED(
         ^
/Users/scottj/.node-gyp/6.11.2/include/node/v8config.h:336:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated))
                            ^
In file included from ../src/Canvas.cc:7:
In file included from ../src/Canvas.h:22:
../../nan/nan.h:529:24: warning: 'NewFromOneByte' is deprecated [-Wdeprecated-declarations]
    return v8::String::NewFromOneByte(
                       ^
/Users/scottj/.node-gyp/6.11.2/include/node/v8.h:2332:10: note: 'NewFromOneByte' has been explicitly marked deprecated here
  static V8_DEPRECATED(
         ^
/Users/scottj/.node-gyp/6.11.2/include/node/v8config.h:336:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated))
                            ^
In file included from ../src/Canvas.cc:7:
In file included from ../src/Canvas.h:22:
../../nan/nan.h:538:24: warning: 'NewFromOneByte' is deprecated [-Wdeprecated-declarations]
    return v8::String::NewFromOneByte(v8::Isolate::GetCurrent(), arg);
                       ^
/Users/scottj/.node-gyp/6.11.2/include/node/v8.h:2332:10: note: 'NewFromOneByte' has been explicitly marked deprecated here
  static V8_DEPRECATED(
         ^
/Users/scottj/.node-gyp/6.11.2/include/node/v8config.h:336:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated))
                            ^
In file included from ../src/Canvas.cc:7:
In file included from ../src/Canvas.h:22:
../../nan/nan.h:544:24: warning: 'NewFromOneByte' is deprecated [-Wdeprecated-declarations]
    return v8::String::NewFromOneByte(v8::Isolate::GetCurrent(), arg);
                       ^
/Users/scottj/.node-gyp/6.11.2/include/node/v8.h:2332:10: note: 'NewFromOneByte' has been explicitly marked deprecated here
  static V8_DEPRECATED(
         ^
/Users/scottj/.node-gyp/6.11.2/include/node/v8config.h:336:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated))
                            ^
In file included from ../src/Canvas.cc:7:
In file included from ../src/Canvas.h:22:
../../nan/nan.h:619:24: warning: 'NewExternal' is deprecated [-Wdeprecated-declarations]
    return v8::String::NewExternal(v8::Isolate::GetCurrent(), resource);
                       ^
/Users/scottj/.node-gyp/6.11.2/include/node/v8.h:2371:10: note: 'NewExternal' has been explicitly marked deprecated here
  static V8_DEPRECATED("Use maybe version",
         ^
/Users/scottj/.node-gyp/6.11.2/include/node/v8config.h:336:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated))
                            ^
In file included from ../src/Canvas.cc:7:
In file included from ../src/Canvas.h:22:
../../nan/nan.h:623:19: error: no type named 'ExternalAsciiStringResource' in 'v8::String'; did you mean 'ExternalStringResource'?
      v8::String::ExternalAsciiStringResource *resource) {
      ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
                  ExternalStringResource
/Users/scottj/.node-gyp/6.11.2/include/node/v8.h:2241:19: note: 'ExternalStringResource' declared here
  class V8_EXPORT ExternalStringResource
                  ^
In file included from ../src/Canvas.cc:7:
In file included from ../src/Canvas.h:22:
../../nan/nan.h:622:36: error: redefinition of 'NanNew'
  NAN_INLINE v8::Local<v8::String> NanNew(
                                   ^
../../nan/nan.h:617:36: note: previous definition is here
  NAN_INLINE v8::Local<v8::String> NanNew(
                                   ^
../../nan/nan.h:624:24: warning: 'NewExternal' is deprecated [-Wdeprecated-declarations]
    return v8::String::NewExternal(v8::Isolate::GetCurrent(), resource);
                       ^
/Users/scottj/.node-gyp/6.11.2/include/node/v8.h:2371:10: note: 'NewExternal' has been explicitly marked deprecated here
  static V8_DEPRECATED("Use maybe version",
         ^
/Users/scottj/.node-gyp/6.11.2/include/node/v8config.h:336:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated))
                            ^
In file included from ../src/Canvas.cc:7:
In file included from ../src/Canvas.h:22:
../../nan/nan.h:637:27: error: redefinition of '_NanEscapeScopeHelper'
  NAN_INLINE v8::Local<T> _NanEscapeScopeHelper(v8::Local<T> val) {
                          ^
../../nan/nan.h:632:27: note: previous definition is here
  NAN_INLINE v8::Local<T> _NanEscapeScopeHelper(v8::Handle<T> val) {
                          ^
../../nan/nan.h:653:12: error: no matching function for call to '_NanEscapeScopeHelper'
    return NanEscapeScope(NanNew(v8::Undefined(v8::Isolate::GetCurrent())));
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:641:43: note: expanded from macro 'NanEscapeScope'
# define NanEscapeScope(val) scope.Escape(_NanEscapeScopeHelper(val))
                                          ^~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:637:27: note: candidate template ignored: substitution failure [with T = v8::Primitive]
  NAN_INLINE v8::Local<T> _NanEscapeScopeHelper(v8::Local<T> val) {
                          ^
../../nan/nan.h:658:12: error: no matching function for call to '_NanEscapeScopeHelper'
    return NanEscapeScope(NanNew(v8::Null(v8::Isolate::GetCurrent())));
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:641:43: note: expanded from macro 'NanEscapeScope'
# define NanEscapeScope(val) scope.Escape(_NanEscapeScopeHelper(val))
                                          ^~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:637:27: note: candidate template ignored: substitution failure [with T = v8::Primitive]
  NAN_INLINE v8::Local<T> _NanEscapeScopeHelper(v8::Local<T> val) {
                          ^
../../nan/nan.h:663:12: error: no matching function for call to '_NanEscapeScopeHelper'
    return NanEscapeScope(NanNew(v8::True(v8::Isolate::GetCurrent())));
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:641:43: note: expanded from macro 'NanEscapeScope'
# define NanEscapeScope(val) scope.Escape(_NanEscapeScopeHelper(val))
                                          ^~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:637:27: note: candidate template ignored: substitution failure [with T = v8::Boolean]
  NAN_INLINE v8::Local<T> _NanEscapeScopeHelper(v8::Local<T> val) {
                          ^
../../nan/nan.h:668:12: error: no matching function for call to '_NanEscapeScopeHelper'
    return NanEscapeScope(NanNew(v8::False(v8::Isolate::GetCurrent())));
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:641:43: note: expanded from macro 'NanEscapeScope'
# define NanEscapeScope(val) scope.Escape(_NanEscapeScopeHelper(val))
                                          ^~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:637:27: note: candidate template ignored: substitution failure [with T = v8::Boolean]
  NAN_INLINE v8::Local<T> _NanEscapeScopeHelper(v8::Local<T> val) {
                          ^
../../nan/nan.h:701:20: error: no type named 'GCEpilogueCallback' in 'v8::Isolate'
      v8::Isolate::GCEpilogueCallback callback
      ~~~~~~~~~~~~~^
../../nan/nan.h:707:20: error: no type named 'GCEpilogueCallback' in 'v8::Isolate'
      v8::Isolate::GCEpilogueCallback callback) {
      ~~~~~~~~~~~~~^
../../nan/nan.h:712:20: error: no type named 'GCPrologueCallback' in 'v8::Isolate'
      v8::Isolate::GCPrologueCallback callback
      ~~~~~~~~~~~~~^
../../nan/nan.h:718:20: error: no type named 'GCPrologueCallback' in 'v8::Isolate'
      v8::Isolate::GCPrologueCallback callback) {
      ~~~~~~~~~~~~~^
../../nan/nan.h:889:13: error: no member named 'smalloc' in namespace 'node'
    , node::smalloc::FreeCallback callback
      ~~~~~~^
../../nan/nan.h:900:12: error: no matching function for call to 'New'
    return node::Buffer::New(v8::Isolate::GetCurrent(), data, size);
           ^~~~~~~~~~~~~~~~~
/Users/scottj/.node-gyp/6.11.2/include/node/node_buffer.h:46:40: note: candidate function not viable: 2nd argument ('const char *') would lose const
      qualifier
NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate,
                                       ^
/Users/scottj/.node-gyp/6.11.2/include/node/node_buffer.h:34:40: note: candidate function not viable: no known conversion from 'const char *' to
      'v8::Local<v8::String>' for 2nd argument
NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate,
                                       ^
/Users/scottj/.node-gyp/6.11.2/include/node/node_buffer.h:31:40: note: candidate function not viable: requires 2 arguments, but 3 were provided
NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate, size_t length);
                                       ^
/Users/scottj/.node-gyp/6.11.2/include/node/node_buffer.h:39:40: note: candidate function not viable: requires 5 arguments, but 3 were provided
NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate,
                                       ^
In file included from ../src/Canvas.cc:7:
In file included from ../src/Canvas.h:22:
../../nan/nan.h:904:12: error: no viable conversion from returned value of type 'v8::MaybeLocal<v8::Object>' to function return type
      'v8::Local<v8::Object>'
    return node::Buffer::New(v8::Isolate::GetCurrent(), size);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/scottj/.node-gyp/6.11.2/include/node/v8.h:218:7: note: candidate constructor (the implicit copy constructor) not viable: no known conversion
      from 'v8::MaybeLocal<v8::Object>' to 'const v8::Local<v8::Object> &' for 1st argument
class Local {
      ^
/Users/scottj/.node-gyp/6.11.2/include/node/v8.h:218:7: note: candidate constructor (the implicit move constructor) not viable: no known conversion
      from 'v8::MaybeLocal<v8::Object>' to 'v8::Local<v8::Object> &&' for 1st argument
/Users/scottj/.node-gyp/6.11.2/include/node/v8.h:222:13: note: candidate template ignored: could not match 'Local' against 'MaybeLocal'
  V8_INLINE Local(Local<S> that)
            ^
In file included from ../src/Canvas.cc:7:
In file included from ../src/Canvas.h:22:
../../nan/nan.h:911:26: error: no member named 'Use' in namespace 'node::Buffer'
    return node::Buffer::Use(v8::Isolate::GetCurrent(), data, size);
           ~~~~~~~~~~~~~~^
../../nan/nan.h:938:32: warning: 'Compile' is deprecated [-Wdeprecated-declarations]
    return v8::ScriptCompiler::Compile(v8::Isolate::GetCurrent(), &source);
                               ^
/Users/scottj/.node-gyp/6.11.2/include/node/v8.h:1352:10: note: 'Compile' has been explicitly marked deprecated here
  static V8_DEPRECATED(
         ^
/Users/scottj/.node-gyp/6.11.2/include/node/v8config.h:336:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated))
                            ^
In file included from ../src/Canvas.cc:7:
In file included from ../src/Canvas.h:22:
../../nan/nan.h:945:32: warning: 'Compile' is deprecated [-Wdeprecated-declarations]
    return v8::ScriptCompiler::Compile(v8::Isolate::GetCurrent(), &source);
                               ^
/Users/scottj/.node-gyp/6.11.2/include/node/v8.h:1352:10: note: 'Compile' has been explicitly marked deprecated here
  static V8_DEPRECATED(
         ^
/Users/scottj/.node-gyp/6.11.2/include/node/v8config.h:336:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated))
                            ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
15 warnings and 20 errors generated.
make: *** [Release/obj.target/canvas/src/Canvas.o] Error 1
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/Users/scottj/.nvm/versions/node/v6.11.2/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:258: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:215:12)
gyp ERR! System Darwin 16.7.0
gyp ERR! command "/Users/scottj/.nvm/versions/node/v6.11.2/bin/node" "/Users/scottj/.nvm/versions/node/v6.11.2/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /Users/scottj/Source/loop-renderer/node_modules/canvas
gyp ERR! node -v v6.11.2
gyp ERR! node-gyp -v v3.6.2
gyp ERR! not ok