Node.js和jdbc:TypeError:无法读取未定义的属性“url”

我是nodejs和JavaScript的新手。 我正在尝试连接MySQL到nodejs的一个非常基本的例子。 我正在使用一个npm jdbc包来达到这个目的。 下面是我用于连接和获取exception下面的代码片段。 你能帮我解决这个问题吗?

码:

var express = require('express'); var app = express(); var server = require('http').Server(app); var https =require('http'); var io = require('socket.io')(server); var kafka = require('kafka-node'); var cassandra = require('cassandra-driver'); var jdbc = new (require('jdbc')); var jinst = require('jdbc/lib/jinst'); var Pool = require('jdbc/lib/pool'); var _ = require('underscore'); // var cors = require("cors"); app.use(express.static(__dirname + '/view')); server.listen(3000); app.use('/bower_components', express.static(__dirname + '/bower_components')); app.get('/', function (req, res, next) { res.sendFile(__dirname + '/index.html');}); if (!jinst.isJvmCreated()) { jinst.addOption("-Xrs"); jinst.setupClasspath(['../mysql-connector-java-5.1.39-bin.jar']); } var config = { url: 'jdbc:mysql://localhost:3306/DB', user : 'root', password: 'root', minpoolsize: 2, maxpoolsize: 3, drivername: 'com.mysql.jdbc.Driver' }; //Initialize jdbc object jdbc.initialize(config, function(err, res){ if (err){ console.log(err); } }); jdbc.open(function(err, conn) { if (conn) { //Run first query jdbc.executeQuery('show databases', function(err, results){ if (err){ console.log(err); } else if (results) { console.log(results); } }); }else{ console.log('Connection object:' + conn); console.log(err); } }); jdbc.close(function(err){ if(err) { console.log(err); } else { console.log('Connection closed successfully!');} }); 

例外:

 Field_Test\node_modules\jdbc\lib\pool.js:64 this._url = config.url; ^ TypeError: Cannot read property 'url' of undefined at JDBC.Pool (<Dir>\node_modules\jdbc\lib\pool.js:64:21) at new JDBC (<Dir>\node_modules\jdbc\lib\jdbc.js:6:8) at Object.<anonymous> (Web\app.js:10:12) at Module._compile (module.js:570:32) at Object.Module._extensions..js (module.js:579:10) at Module.load (module.js:487:32) at tryModuleLoad (module.js:446:12) at Function.Module._load (module.js:438:3) at Module.runMain (module.js:604:10) at run (bootstrap_node.js:394:7) 

你的问题是与顶部的要求,根据文档https://www.npmjs.com/package/jdbc ,当你创build一个新的实例,你需要传递configuration参数,你可以做到这一点两种方式

 var config = {url: 'jdbc:mysql://localhost:3306/DB'} var jdbc = new (require('jdbc'))(config); 

或者你可以在代码中排队

 var Jdbc = require('jdbc'); ... var config = {url: 'jdbc:mysql://localhost:3306/DB'} var jdbc = new Jdbc(config) 

在你的代码的上下文中

 var express = require('express'); var app = express(); var server = require('http').Server(app); var https =require('http'); var io = require('socket.io')(server); var kafka = require('kafka-node'); var cassandra = require('cassandra-driver'); var Jdbc = require('jdbc'); var jinst = require('jdbc/lib/jinst'); var Pool = require('jdbc/lib/pool'); var _ = require('underscore'); // var cors = require("cors"); app.use(express.static(__dirname + '/view')); server.listen(3000); app.use('/bower_components', express.static(__dirname + '/bower_components')); app.get('/', function (req, res, next) { res.sendFile(__dirname + '/index.html');}); if (!jinst.isJvmCreated()) { jinst.addOption("-Xrs"); jinst.setupClasspath(['../mysql-connector-java-5.1.39-bin.jar']); } var config = { url: 'jdbc:mysql://localhost:3306/DB', user : 'root', password: 'root', minpoolsize: 2, maxpoolsize: 3, drivername: 'com.mysql.jdbc.Driver' }; var jdbc = new JDBC(config); //Initialize jdbc object jdbc.initialize(config, function(err, res){ if (err){ console.log(err); } }); jdbc.open(function(err, conn) { if (conn) { //Run first query jdbc.executeQuery('show databases', function(err, results){ if (err){ console.log(err); } else if (results) { console.log(results); } }); }else{ console.log('Connection object:' + conn); console.log(err); } }); jdbc.close(function(err){ if(err) { console.log(err); } else { console.log('Connection closed successfully!');} });