title: Node can't find installed mysql module
body: <p>I'm trying to use the node-mysql module to connect to my database. It was working fine, I updated my script (not even the connection script) and all in a sudden it can't locate the mysql module.</p>
  
  <p>Here's my connection script, db_connect:</p>
  
  <pre><code>var mysql      = require('mysql');
  var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'root',
      password : '',
      database : 'officeball'
  });
  </code></pre>
  
  <p>and for reference, here are the two scripts that I changed, login.js:</p>
  
  <pre><code>console.log('login module initialized');
  
  var express     = require('express');
  var app         = express();
  var validator   = require('./validator');
  
  var username;
  var password;
  
  function listen(){
      app.use(express.bodyParser());
  
      app.post('/login', function(req, res) {
          console.log('User ' + req.body.email + ' is attempting login...');
          username = req.body.email;
          password = req.body.password;
          validator.validate(username,password);  
          if (validator.validate() === req.body.email){
              res.writeHead(302, {'Location': 'http://localhost/officeball/app.php'});
          }
          res.end();
      });
  
      app.listen(8080, function() {
          console.log('Server running at http://127.0.0.1:8080/');
      });
  }
  
  exports.listen = listen;
  </code></pre>
  
  <p>and the main change, validator.js:</p>
  
  <pre><code>console.log('validator module initialized');
  var login = require("./db_connect");
  
  function validate(username, password, callback){
  
      connection.connect(function (err){
          console.log('Connection with the officeball MySQL database openned...');
          if (err) return callback(new Error('Failed to connect'), null);
          // if no error, you can do things now.
  
          connection.query('select username,password from users where username=?',
                  username,
                  function(err,rows,fields) {
                      //  we are done with the connection at this point), so can close it
                      connection.end();
                      console.log('...Connection with the officeball MySQL database closed.');
  
                      // here is where you process results
                      if (err)
                          return callback(new Error ('Error while performing query'), null);
                      if (rows.length !== 1)
                          return callback(new Error ('Failed to find exactly one user'), null);
  
                      // test the password you provided against the one in the DB.
                      // note this is terrible practice - you should not store in the
                      // passwords in the clear, obviously. You should store a hash,
                      // but this is trying to get you on the right general path
  
                      if (rows[0].password === password) {
                          // you would probably want a more useful callback result than 
                          // just returning the username, but again - an example
                          return callback(null, rows[0].username);
                      } else {
                          return callback(new Error ('Bad Password'), null);
                      }
  
                  });
  
  
      });
  };
  
  exports.validate = validate;
  </code></pre>
  
  <p>console log:</p>
  
  <pre><code>C:\xampp\htdocs\officeball\node_scripts&gt;npm install node-mysql
  npm http GET https://registry.npmjs.org/node-mysql
  npm http 200 https://registry.npmjs.org/node-mysql
  npm http GET https://registry.npmjs.org/node-mysql/-/node-mysql-0.3.7.tgz
  npm http 200 https://registry.npmjs.org/node-mysql/-/node-mysql-0.3.7.tgz
  npm http GET https://registry.npmjs.org/cps
  npm http GET https://registry.npmjs.org/better-js-class
  npm http GET https://registry.npmjs.org/underscore
  npm http GET https://registry.npmjs.org/mysql
  npm http 200 https://registry.npmjs.org/better-js-class
  npm http GET https://registry.npmjs.org/better-js-class/-/better-js-class-0.1.3.
  tgz
  npm http 200 https://registry.npmjs.org/underscore
  npm http GET https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz
  npm http 200 https://registry.npmjs.org/cps
  npm http GET https://registry.npmjs.org/cps/-/cps-1.0.0.tgz
  npm http 200 https://registry.npmjs.org/better-js-class/-/better-js-class-0.1.3.
  tgz
  npm http 200 https://registry.npmjs.org/mysql
  npm http 200 https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz
  npm http 200 https://registry.npmjs.org/cps/-/cps-1.0.0.tgz
  npm http GET https://registry.npmjs.org/require-all/0.0.3
  npm http GET https://registry.npmjs.org/readable-stream
  npm http GET https://registry.npmjs.org/bignumber.js/1.0.1
  npm http 304 https://registry.npmjs.org/require-all/0.0.3
  npm http 304 https://registry.npmjs.org/readable-stream
  npm http 200 https://registry.npmjs.org/bignumber.js/1.0.1
  npm http GET https://registry.npmjs.org/bignumber.js/-/bignumber.js-1.0.1.tgz
  npm http 200 https://registry.npmjs.org/bignumber.js/-/bignumber.js-1.0.1.tgz
  npm http GET https://registry.npmjs.org/debuglog/0.0.2
  npm http GET https://registry.npmjs.org/core-util-is
  npm http GET https://registry.npmjs.org/string_decoder
  npm http 304 https://registry.npmjs.org/core-util-is
  npm http 304 https://registry.npmjs.org/string_decoder
  npm http 304 https://registry.npmjs.org/debuglog/0.0.2
  node-mysql@0.3.7 node_modules\node-mysql
  ├── better-js-class@0.1.3
  ├── cps@1.0.0
  ├── underscore@1.6.0
  └── mysql@2.1.0 (require-all@0.0.3, readable-stream@1.1.11, bignumber.js@1.0.1)
  
  C:\xampp\htdocs\officeball\node_scripts&gt;node index.js
  application initialized
  server module initialized
  login module initialized
  validator module initialized
  
  module.js:340
      throw err;
            ^
  Error: Cannot find module 'mysql'
      at Function.Module._resolveFilename (module.js:338:15)
      at Function.Module._load (module.js:280:25)
      at Module.require (module.js:364:17)
      at require (module.js:380:17)
      at Object.&lt;anonymous&gt; (C:\xampp\htdocs\officeball\node_scripts\custom_module
  s\db_connect.js:1:80)
      at Module._compile (module.js:456:26)
      at Object.Module._extensions..js (module.js:474:10)
      at Module.load (module.js:356:32)
      at Function.Module._load (module.js:312:12)
      at Module.require (module.js:364:17)
  
  C:\xampp\htdocs\officeball\node_scripts&gt;node index.js
  application initialized
  
  module.js:340
      throw err;
            ^
  Error: Cannot find module 'mysql'
      at Function.Module._resolveFilename (module.js:338:15)
      at Function.Module._load (module.js:280:25)
      at Module.require (module.js:364:17)
      at require (module.js:380:17)
      at Object.&lt;anonymous&gt; (C:\xampp\htdocs\officeball\node_scripts\index.js:4:18
  )
      at Module._compile (module.js:456:26)
      at Object.Module._extensions..js (module.js:474:10)
      at Module.load (module.js:356:32)
      at Function.Module._load (module.js:312:12)
      at Function.Module.runMain (module.js:497:10)
  
  C:\xampp\htdocs\officeball\node_scripts&gt;node index.js
  application initialized
  server module initialized
  login module initialized
  validator module initialized
  
  module.js:340
      throw err;
            ^
  Error: Cannot find module 'mysql'
      at Function.Module._resolveFilename (module.js:338:15)
      at Function.Module._load (module.js:280:25)
      at Module.require (module.js:364:17)
      at require (module.js:380:17)
      at Object.&lt;anonymous&gt; (C:\xampp\htdocs\officeball\node_scripts\custom_module
  s\db_connect.js:1:80)
      at Module._compile (module.js:456:26)
      at Object.Module._extensions..js (module.js:474:10)
      at Module.load (module.js:356:32)
      at Function.Module._load (module.js:312:12)
      at Module.require (module.js:364:17)
  
  C:\xampp\htdocs\officeball\node_scripts&gt;
  </code></pre>
  
  <p>What newbie mistake have I made?</p>