title: Can not find module "sleep", with Leap motion
body: <p>I'm trying to connect my Android project with Leap motion controller and am using the procedure and source mentioned on <a href="https://stackoverflow.com/questions/24863925/how-to-connect-leap-motion-directly-to-android">this question</a> as reference.</p>
  
  <p>I'm very new to Node.js and am unable to get the JavaScript file to work with Node and am unable to resolve dependencies. I tried <code>node update</code> but that didn't work. I need to resolve the following error:</p>
  
  <pre><code>$ node index.js 
  module.js:338
      throw err;
            ^
  Error: Cannot find module 'sleep'
      at Function.Module._resolveFilename (module.js:336:15)
      at Function.Module._load (module.js:278:25)
      at Module.require (module.js:365:17)
      at require (module.js:384:17)
      at Object.&lt;anonymous&gt; (/home/shivin/Development/LeapJS code/LeapMotionAndroidBridge/WebContent/index.js:11:13)
      at Module._compile (module.js:460:26)
      at Object.Module._extensions..js (module.js:478:10)
      at Module.load (module.js:355:32)
      at Function.Module._load (module.js:310:12)
      at Function.Module.runMain (module.js:501:10)
  </code></pre>
  
  <p>Here's the JavaScript file for reference:</p>
  
  <pre><code>var http = require('http'), express = require('express'), app = express(), server = http
          .createServer(app), port = process.env.PORT || 5000, position = {
      x : 0,
      y : 0,
      z : 0,
      hand : '',
      present : false
  };
  var updated = false;
  
  var sleep = require('sleep');
  
  server.listen(port, function() {
      console.log('Listening on ' + port);
  });
  
  function hasUpdate() {
      if (updated) {
          updated = false;
          return true;
      }
      return false;
  }
  
  var BinaryServer = require('binaryjs').BinaryServer;
  var binaryServer = new BinaryServer({
      port : 9000
  
  });
  binaryServer.on('connection', function(client) {
      console.log('accept binary connection');
      var stream = client.createStream();
      var buffer = [];
      console.log('got stream');
      stream.on('data', function(data) {
          buffer.push(data);
          var text = buffer.join();
          var end = text.lastIndexOf('}');
          if (end &gt; -1) {
              var temp = text.substr(0, end+1);
              var start = temp.lastIndexOf('{');
              if (start &gt; -1) {
                  var message = text.substr(start, end+1);
  
                  var o=JSON.parse(message);
                  updateHandPosition(o);
  
                  if (end +1 &lt; buffer.length) {
                      buffer = buffer.splice(end + 1, buffer.length);
                  }else{
                      buffer=[];
                  }
              }
  //          console.log('received data from client ' + message + ' ' + end
  //                  + ' ' + start + ' ');
  
          }
      });
  });
  
  app.use(express.bodyParser());
  
  app.get('/', function(request, response) {
      response.sendfile('public/index.html');
  });
  
  function updateHandPosition(o){
      position.present = o.present;
      if (position.present) {
          position.x = o.x;
          position.y = o.y;
          position.z = o.z;
          position.hand = o.hand;
      } else {
          position.x = null;
          position.y = null;
          position.z = null;
          position.hand = null;
      }
      updated=true;
  //  console.log('updating hand position '+JSON.stringify(position));
  }
  
  app.post('/update', function(request, response) {
      updateHandPosition(response.body);
      response.json({
          success : true
      });
      updated = true;
  });
  
  app.get('/retrieve', function(request, response) {
      response.json(getPositionData());
  });
  
  function getPositionData() {
      if (position.present) {
          return {
              present : true,
              x : position.x,
              y : position.y,
              z : position.z,
              hand : position.hand
          };
      } else {
          return {
              present : false
          };
      }
  }
  
  function forever(request, response) {
      this.response = response;
      this.request = request;
  
      var ref = this;
      this.request.on('close', function() {
          ref.clear();
      });
      this.request.on('end', function() {
          ref.clear();
      });
  };
  
  forever.prototype.clear = function() {
      this.request = null;
      this.response = null;
  };
  forever.prototype.stream = function() {
      if (this.response != null) {
          if (hasUpdate()) {
              this.response.write(JSON.stringify(getPositionData()));
              this.response.write(",");
          }
          var ref = this;
          setTimeout(function() {
              ref.stream();
          }, 5);
      }
  
  };
  
  app.get('/stream', function(request, response) {
      var f = new forever(request, response);
      f.stream();
  });
  
  app.get(/^(.+)$/, function(req, res) {
      res.sendfile('public/' + req.params[0]);
  });
  </code></pre>
  
  <p>I tried using "node install sleep" but I get this error log:</p>
  
  <pre><code>npm WARN package.json LeapCallController@0.1.0 No repository field.
  /
  &gt; sleep@2.0.0 install /home/shivin/Development/LeapJS code/LeapMotionAndroidBridge/WebContent/node_modules/sleep
  &gt; node-gyp rebuild
  
  gyp ERR! configure error 
  gyp ERR! stack Error: "pre" versions of node cannot be installed, use the --nodedir flag instead
  gyp ERR! stack     at install (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/install.js:66:16)
  gyp ERR! stack     at Object.self.commands.(anonymous function) [as install] (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/node-gyp.js:66:37)
  gyp ERR! stack     at getNodeDir (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:152:20)
  gyp ERR! stack     at /usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:95:9
  gyp ERR! stack     at ChildProcess.exithandler (child_process.js:723:7)
  gyp ERR! stack     at ChildProcess.emit (events.js:110:17)
  gyp ERR! stack     at maybeClose (child_process.js:1000:16)
  gyp ERR! stack     at Socket.&lt;anonymous&gt; (child_process.js:1168:11)
  gyp ERR! stack     at Socket.emit (events.js:107:17)
  gyp ERR! stack     at Pipe.close (net.js:461:12)
  gyp ERR! System Linux 3.16.0-30-generic
  gyp ERR! command "node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
  gyp ERR! cwd /home/shivin/Development/LeapJS code/LeapMotionAndroidBridge/WebContent/node_modules/sleep
  gyp ERR! node -v v0.13.0-pre
  gyp ERR! node-gyp -v v1.0.1
  gyp ERR! not ok 
  
  npm ERR! sleep@2.0.0 install: `node-gyp rebuild`
  npm ERR! Exit status 1
  npm ERR! 
  npm ERR! Failed at the sleep@2.0.0 install script.
  npm ERR! This is most likely a problem with the sleep 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 their info via:
  npm ERR!     npm owner ls sleep
  npm ERR! There is likely additional logging output above.
  npm ERR! System Linux 3.16.0-30-generic
  npm ERR! command "/usr/local/bin/node" "/usr/local/bin/npm" "install" "sleep"
  npm ERR! cwd /home/shivin/Development/LeapJS code/LeapMotionAndroidBridge/WebContent
  npm ERR! node -v v0.13.0-pre
  npm ERR! npm -v 1.4.28
  npm ERR! code ELIFECYCLE
  npm ERR! not ok code 0
  </code></pre>