title: Error installing bcrypt with npm
body: <p>I'm unable to install <a href="https://www.npmjs.com/package/bcrypt"><code>bcrypt</code></a> using <code>npm</code> on my machine because I encounter the following errors. I have been troubleshooting the issue without much luck. Can you recommend any steps to diagnose or fix the problem so I can run <code>npm install bcrypt</code> successfully?</p>
  
  <pre><code>Someones-Macbook:node_modules Cody$ npm install bcrypt
  npm WARN package.json grunt-contrib-htmlmin@0.1.3 No README data
  |
  &gt; bcrypt@0.7.7 install /Applications/MAMP/htdocs/richintime/ultimate-seed/node_modules/bcrypt
  &gt; node-gyp rebuild
  
  child_process: customFds option is deprecated, use stdio instead.
    CXX(target) Release/obj.target/bcrypt_lib/src/blowfish.o
    CXX(target) Release/obj.target/bcrypt_lib/src/bcrypt.o
    CXX(target) Release/obj.target/bcrypt_lib/src/bcrypt_node.o
  ../src/bcrypt_node.cc:118:18: error: no member named 'Dispose' in 'v8::Persistent&lt;v8::Function, v8::NonCopyablePersistentTraits&lt;v8::Function&gt;
        &gt;'
          callback.Dispose();
          ~~~~~~~~ ^
  ../src/bcrypt_node.cc:202:19: error: unknown type name 'uv_work_t'
  void GenSaltAsync(uv_work_t* req) {
                    ^
  ../src/bcrypt_node.cc:219:24: error: unknown type name 'uv_work_t'
  void GenSaltAsyncAfter(uv_work_t* req) {
                         ^
  ../src/bcrypt_node.cc:220:17: error: calling a protected constructor of class 'v8::HandleScope'
      HandleScope scope;
                  ^
  /Users/Cody/.node-gyp/0.12.0/deps/v8/include/v8.h:816:13: note: declared protected here
    V8_INLINE HandleScope() {}
              ^
  ../src/bcrypt_node.cc:228:44: error: no member named 'New' in 'v8::String'
          argv[0] = Exception::Error(String::New(baton-&gt;error.c_str()));
                                     ~~~~~~~~^
  ../src/bcrypt_node.cc:229:19: error: no matching function for call to 'Undefined'
          argv[1] = Undefined();
                    ^~~~~~~~~
  /Users/Cody/.node-gyp/0.12.0/deps/v8/include/v8.h:305:28: note: candidate function not viable: requires single argument 'isolate', but no
        arguments were provided
    friend Handle&lt;Primitive&gt; Undefined(Isolate* isolate);
                             ^
  ../src/bcrypt_node.cc:232:19: error: no matching function for call to 'Undefined'
          argv[0] = Undefined();
                    ^~~~~~~~~
  /Users/Cody/.node-gyp/0.12.0/deps/v8/include/v8.h:305:28: note: candidate function not viable: requires single argument 'isolate', but no
        arguments were provided
    friend Handle&lt;Primitive&gt; Undefined(Isolate* isolate);
                             ^
  ../src/bcrypt_node.cc:238:20: error: member reference type 'v8::Persistent&lt;v8::Function&gt;' is not a pointer; maybe you meant to use '.'?
      baton-&gt;callback-&gt;Call(Context::GetCurrent()-&gt;Global(), 2, argv);
      ~~~~~~~~~~~~~~~^~
                     .
  ../src/bcrypt_node.cc:238:22: error: no member named 'Call' in 'v8::Persistent&lt;v8::Function, v8::NonCopyablePersistentTraits&lt;v8::Function&gt; &gt;'
      baton-&gt;callback-&gt;Call(Context::GetCurrent()-&gt;Global(), 2, argv);
      ~~~~~~~~~~~~~~~  ^
  ../src/bcrypt_node.cc:238:36: error: no member named 'GetCurrent' in 'v8::Context'
      baton-&gt;callback-&gt;Call(Context::GetCurrent()-&gt;Global(), 2, argv);
                            ~~~~~~~~~^
  ../src/bcrypt_node.cc:246:34: error: unknown type name 'Arguments'; did you mean 'v8::internal::Arguments'?
  Handle&lt;Value&gt; GenerateSalt(const Arguments &amp;args) {
                                   ^~~~~~~~~
                                   v8::internal::Arguments
  /Users/Cody/.node-gyp/0.12.0/deps/v8/include/v8.h:127:7: note: 'v8::internal::Arguments' declared here
  class Arguments;
        ^
  ../src/bcrypt_node.cc:247:17: error: calling a protected constructor of class 'v8::HandleScope'
      HandleScope scope;
                  ^
  /Users/Cody/.node-gyp/0.12.0/deps/v8/include/v8.h:816:13: note: declared protected here
    V8_INLINE HandleScope() {}
              ^
  ../src/bcrypt_node.cc:249:32: error: type 'const v8::internal::Arguments' does not provide a subscript operator
      const ssize_t rounds = args[0]-&gt;Int32Value();
                             ~~~~^~
  ../src/bcrypt_node.cc:250:30: error: type 'const v8::internal::Arguments' does not provide a subscript operator
      const int rand_len = args[1]-&gt;Int32Value();
                           ~~~~^~
  ../src/bcrypt_node.cc:251:58: error: type 'const v8::internal::Arguments' does not provide a subscript operator
      Local&lt;Function&gt; callback = Local&lt;Function&gt;::Cast(args[2]);
                                                       ~~~~^~
  ../src/bcrypt_node.cc:255:45: error: 'New' is a private member of 'v8::PersistentBase&lt;v8::Function&gt;'
      baton-&gt;callback = Persistent&lt;Function&gt;::New(callback);
                                              ^
  /Users/Cody/.node-gyp/0.12.0/deps/v8/include/v8.h:572:23: note: declared private here
    V8_INLINE static T* New(Isolate* isolate, T* that);
                        ^
  ../src/bcrypt_node.cc:255:57: error: too few arguments to function call, expected 2, have 1
      baton-&gt;callback = Persistent&lt;Function&gt;::New(callback);
                        ~~~~~~~~~~~~~~~~~~~~~~~~~         ^
  /Users/Cody/.node-gyp/0.12.0/deps/v8/include/v8.h:572:3: note: 'New' declared here
    V8_INLINE static T* New(Isolate* isolate, T* that);
    ^
  /Users/Cody/.node-gyp/0.12.0/deps/v8/include/v8config.h:289:20: note: expanded from macro 'V8_INLINE'
  # define V8_INLINE inline __attribute__((always_inline))
                     ^
  ../src/bcrypt_node.cc:259:5: error: unknown type name 'uv_work_t'
      uv_work_t* req = new uv_work_t;
      ^
  ../src/bcrypt_node.cc:259:26: error: unknown type name 'uv_work_t'
      uv_work_t* req = new uv_work_t;
                           ^
  fatal error: too many errors emitted, stopping now [-ferror-limit=]
  20 errors generated.
  make: *** [Release/obj.target/bcrypt_lib/src/bcrypt_node.o] Error 1
  gyp ERR! build error 
  gyp ERR! stack Error: `make` failed with exit code: 2
  gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:267:23)
  gyp ERR! stack     at ChildProcess.emit (events.js:110:17)
  gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:1067:12)
  gyp ERR! System Darwin 13.4.0
  gyp ERR! command "node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
  gyp ERR! cwd /Applications/MAMP/htdocs/richintime/ultimate-seed/node_modules/bcrypt
  gyp ERR! node -v v0.12.0
  gyp ERR! node-gyp -v v1.0.2
  gyp ERR! not ok 
  npm ERR! Darwin 13.4.0
  npm ERR! argv "node" "/usr/local/bin/npm" "install" "bcrypt"
  npm ERR! node v0.12.0
  npm ERR! npm  v2.7.1
  npm ERR! code ELIFECYCLE
  
  npm ERR! bcrypt@0.7.7 install: `node-gyp rebuild`
  npm ERR! Exit status 1
  npm ERR! 
  npm ERR! Failed at the bcrypt@0.7.7 install script 'node-gyp rebuild'.
  npm ERR! This is most likely a problem with the bcrypt package,
  npm ERR! not with npm itself.
  npm ERR! Tell the author that this fails on your system:
  npm ERR!     node-gyp rebuild
  </code></pre>