Node.js和jdbc:TypeError:无法读取undefined的属性'url'(Node.js and jdbc : TypeError: Cannot read pro

编程入门 行业动态 更新时间:2024-10-21 13:43:03
Node.js和jdbc:TypeError:无法读取undefined的属性'url'(Node.js and jdbc : TypeError: Cannot read property 'url' of undefined)

我是nodejs和JavaScript的新手。 我正在尝试将MySQL连接到nodejs的一个非常基本的例子。 我正在使用npm jdbc包来实现此目的。 下面是我用于连接并获得以下异常的代码段。 你能帮我解决这个问题。

码:

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)

I am new to nodejs and JavaScript. I am trying a very basic example of connecting MySQL to nodejs. I am using a npm jdbc package for this purpose. Below is the code snippet I am using for connection and getting below exception. Can you please help me on this.

Code:

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!');} });

Exception:

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 ,当您创建新实例时,您需要传递配置参数,您可以通过两种方式完成

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!');} });

Your issue is with the require at the top, as per the docs https://www.npmjs.com/package/jdbc, when you create a new instance you need to pass the config parameters you can do it two ways

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

or you can do it in line in the code

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

In the context of your code

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!');} });

更多推荐

本文发布于:2023-07-17 07:43:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1141138.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:属性   TypeError   jdbc   Node   js

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!