节点找不到安装的mysql模块

我正在尝试使用node-mysql模块连接到我的数据库。 它工作正常,我更新了我的脚本(甚至没有连接脚本),突然间,它找不到mysql模块。

这是我的连接脚本db_connect:

var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', user : 'root', password : '', database : 'officeball' }); 

以供参考,这里是我更改的两个脚本,login.js:

 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; 

和主要的改变,validator.js:

 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; 

控制台日志:

 C:\xampp\htdocs\officeball\node_scripts>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>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.<anonymous> (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>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.<anonymous> (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>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.<anonymous> (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> 

我做了什么新手的错误?

你得到的npm软件包名称困惑(可以理解的是,在这种情况下是令人困惑的)。 npm软件包的名称和您传递的名称将始终完全匹配,但这并不意味着github回购将是相同的名称。 我想你想要做的是: npm install --save mysql ,它会给你一个mysql包,它恰好存在于一个名为node-mysql的github repo中。 巧合和烦恼,也有一个完全不同的名为node-mysql npm包(违反惯例和公民的敏感性,但无论如何),我怀疑是你想要的。

你也应该做npm uninstall node-mysql来清理你以前的错误。

你想npm install mysql ,而不是npm install node-mysql

第一个安装这个模块 ,第二个安装另一个 。

请注意,看看控制台输出,你会看到比node-mysql安装mysql ,但它只是作为一个内部的依赖。

经验法则 – 你应该是同一个string

命令行:

npm安装什么

Javascript代码

 var what = require('what');