So you're here because bash is outputting some big mess that looks like the following when you tried to install gulp-sass or node-sass via NPM. You've probably updated Node and NPM, switched versions in NVM or HomeBrew and are beating your head while node-sass isn't installing. The issue is likely not in the node or npm version but the package.json.
> node-sass@0.8.6 install /Users/<path-to-project>/_gulp/node_modules/gulp-sass/node_modules/node-sass
> node build.js
( node:43004) [ DEP0006] DeprecationWarning: child_process: options.customFds option is deprecated. Use options.stdio instead.
CXX( target) Release/obj.target/binding/binding.o
In file included from ../binding.cpp:1:
../../nan/nan.h:339:13: error: no member named 'New' in 'v8::String'
return _NAN_ERROR( v8::Exception::Error, errmsg) ;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:319:50: note: expanded from macro '_NAN_ERROR'
# define _NAN_ERROR(fun, errmsg) fun(v8::String::New(errmsg))
~~~~~~~~~~~~^
../../nan/nan.h:343:5: error: no member named 'ThrowException' in namespace 'v8'
_NAN_THROW_ERROR( v8::Exception::Error, errmsg) ;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:324:11: note: expanded from macro '_NAN_THROW_ERROR'
v8::ThrowException( _NAN_ERROR( fun, errmsg)) ; \
~~~~^
../../nan/nan.h:343:5: error: no member named 'New' in 'v8::String'
_NAN_THROW_ERROR( v8::Exception::Error, errmsg) ;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:324:26: note: expanded from macro '_NAN_THROW_ERROR'
v8::ThrowException( _NAN_ERROR( fun, errmsg)) ; \
^~~~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:319:50: note: expanded from macro '_NAN_ERROR'
# define _NAN_ERROR(fun, errmsg) fun(v8::String::New(errmsg))
~~~~~~~~~~~~^
../../nan/nan.h:348:9: error: no type named 'ThrowException' in namespace 'v8'
v8::ThrowException( error) ;
~~~~^
../../nan/nan.h:355:65: error: no member named 'New' in 'v8::String'
v8::Local<v8::Value> err = v8::Exception::Error( v8::String::New( msg)) ;
~~~~~~~~~~~~^
../../nan/nan.h:356:50: error: expected '(' for function -style cast or type construction
v8::Local<v8::Object> obj = err.As<v8::Object>() ;
~~~~~~~~~~^
../../nan/nan.h:356:52: error: expected expression
v8::Local<v8::Object> obj = err.As<v8::Object>() ;
^
../../nan/nan.h:357:65: error: too few arguments to function call, expected 2, have 1
obj->Set( v8::String::New( "code" ) , v8::Int32::New( errorNumber)) ;
~~~~~~~~~~~~~~ ^
/Users/<user>/.node-gyp/8.1.2/include/node/v8.h:2764:3: note: 'New' declared here
static Local<Integer> New( Isolate* isolate, int32_t value) ;
^
In file included from ../binding.cpp:1:
../../nan/nan.h:357:26: error: no member named 'New' in 'v8::String'
obj->Set( v8::String::New( "code" ) , v8::Int32::New( errorNumber)) ;
~~~~~~~~~~~~^
../../nan/nan.h:369:12: error: no member named 'New' in 'v8::String'
return _NAN_ERROR( v8::Exception::TypeError, errmsg) ;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:319:50: note: expanded from macro '_NAN_ERROR'
# define _NAN_ERROR(fun, errmsg) fun(v8::String::New(errmsg))
~~~~~~~~~~~~^
../../nan/nan.h:373:5: error: no member named 'ThrowException' in namespace 'v8'
_NAN_THROW_ERROR( v8::Exception::TypeError, errmsg) ;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:324:11: note: expanded from macro '_NAN_THROW_ERROR'
v8::ThrowException( _NAN_ERROR( fun, errmsg)) ; \
~~~~^
../../nan/nan.h:373:5: error: no member named 'New' in 'v8::String'
_NAN_THROW_ERROR( v8::Exception::TypeError, errmsg) ;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:324:26: note: expanded from macro '_NAN_THROW_ERROR'
v8::ThrowException( _NAN_ERROR( fun, errmsg)) ; \
^~~~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:319:50: note: expanded from macro '_NAN_ERROR'
# define _NAN_ERROR(fun, errmsg) fun(v8::String::New(errmsg))
~~~~~~~~~~~~^
../../nan/nan.h:377:12: error: no member named 'New' in 'v8::String'
return _NAN_ERROR( v8::Exception::RangeError, errmsg) ;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:319:50: note: expanded from macro '_NAN_ERROR'
# define _NAN_ERROR(fun, errmsg) fun(v8::String::New(errmsg))
~~~~~~~~~~~~^
../../nan/nan.h:381:5: error: no member named 'ThrowException' in namespace 'v8'
_NAN_THROW_ERROR( v8::Exception::RangeError, errmsg) ;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:324:11: note: expanded from macro '_NAN_THROW_ERROR'
v8::ThrowException( _NAN_ERROR( fun, errmsg)) ; \
~~~~^
../../nan/nan.h:381:5: error: no member named 'New' in 'v8::String'
_NAN_THROW_ERROR( v8::Exception::RangeError, errmsg) ;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:324:26: note: expanded from macro '_NAN_THROW_ERROR'
v8::ThrowException( _NAN_ERROR( fun, errmsg)) ; \
^~~~~~~~~~~~~~~~~~~~~~~
../../nan/nan.h:319:50: note: expanded from macro '_NAN_ERROR'
# define _NAN_ERROR(fun, errmsg) fun(v8::String::New(errmsg))
~~~~~~~~~~~~^
../../nan/nan.h:406:13: error: no member named 'smalloc' in namespace 'node'
, node::smalloc::FreeCallback callback
~~~~~~^
../../nan/nan.h:141:71: note: expanded from macro 'NAN_INLINE'
# define NAN_INLINE(declarator) inline __attribute__((always_inline)) declarator
^~~~~~~~~~
../../nan/nan.h:416:12: error: no matching function for call to 'New'
return node::Buffer::New( data, size) ;
^~~~~~~~~~~~~~~~~
/Users/<user>/.node-gyp/8.1.2/include/node/node_buffer.h:52:40: note: candidate function not viable: no known conversion from 'char *' to 'v8::Isolate *' for 1st argument
NODE_EXTERN v8::MaybeLocal<v8::Object> New( v8::Isolate* isolate, size_t length) ;
^
/Users/<user>/.node-gyp/8.1.2/include/node/node_buffer.h:55:40: note: candidate function not viable: no known conversion from 'char *' to 'v8::Isolate *' for 1st argument
NODE_EXTERN v8::MaybeLocal<v8::Object> New( v8::Isolate* isolate,
^
/Users/<user>/.node-gyp/8.1.2/include/node/node_buffer.h:67:40: note: candidate function not viable: requires 3 arguments, but 2 were provided
NODE_EXTERN v8::MaybeLocal<v8::Object> New( v8::Isolate* isolate,
^
/Users/<user>/.node-gyp/8.1.2/include/node/node_buffer.h:60:40: note: candidate function not viable: requires 5 arguments, but 2 were provided
NODE_EXTERN v8::MaybeLocal<v8::Object> New( v8::Isolate* isolate,
^
In file included from ../binding.cpp:1:
../../nan/nan.h:420:12: error: no matching function for call to 'New'
return node::Buffer::New( size) ;
^~~~~~~~~~~~~~~~~
/Users/<user>/.node-gyp/8.1.2/include/node/node_buffer.h:52:40: note: candidate function not viable: requires 2 arguments, but 1 was provided
NODE_EXTERN v8::MaybeLocal<v8::Object> New( v8::Isolate* isolate, size_t length) ;
^
/Users/<user>/.node-gyp/8.1.2/include/node/node_buffer.h:55:40: note: candidate function not viable: requires at least 2 arguments, but 1 was provided
NODE_EXTERN v8::MaybeLocal<v8::Object> New( v8::Isolate* isolate,
^
/Users/<user>/.node-gyp/8.1.2/include/node/node_buffer.h:67:40: note: candidate function not viable: requires 3 arguments, but 1 was provided
NODE_EXTERN v8::MaybeLocal<v8::Object> New( v8::Isolate* isolate,
^
/Users/<user>/.node-gyp/8.1.2/include/node/node_buffer.h:60:40: note: candidate function not viable: requires 5 arguments, but 1 was provided
NODE_EXTERN v8::MaybeLocal<v8::Object> New( v8::Isolate* isolate,
^
In file included from ../binding.cpp:1:
../../nan/nan.h:427:26: error: no member named 'Use' in namespace 'node::Buffer'
return node::Buffer::Use( data, size) ;
~~~~~~~~~~~~~~^
fatal error: too many errors emitted, stopping now [ -ferror-limit =]
20 errors generated.
make: *** [ Release/obj.target/binding/binding.o] Error 1
gyp ERR! build error
gyp ERR! stack Error: ` make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit ( /Users/<user>/.nvm/versions/node/v8.1.2/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:258:23)
gyp ERR! stack at emitTwo ( events.js:125:13)
gyp ERR! stack at ChildProcess.emit ( events.js:213:7)
gyp ERR! stack at Process.ChildProcess._handle.onexit ( internal/child_process.js:197:12)
gyp ERR! System Darwin 16.7.0
gyp ERR! command "/Users/<user>/.nvm/versions/node/v8.1.2/bin/node" "/Users/<user>/.nvm/versions/node/v8.1.2/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /Users/<path-to-project>/assets/_gulp/node_modules/gulp-sass/node_modules/node-sass
gyp ERR! node -v v8.1.2
gyp ERR! node-gyp -v v3.6.2
gyp ERR! not ok
Go to package.json and look at the versions. Most likely the version is locked to a very old version of node-sass or gulp-sass in your project (or the project you're using), switch it's version to something recent, (as of writing this, it is "gulp-sass": "^3.0.0"
, or "node-sass": "^4.7.2"
). Congrats, it'll now install!