当前位置: 首页 > 面试题库 >

适用于Node.js的MySQL库中的错误

漆雕欣德
2023-03-14
问题内容

在我的Node.js应用程序中,我试图连接到Amazon上托管的MySQL数据库。

$ npm install mysql

我的代码如下所示:

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'my amazon sql db',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
  if (err) throw err;

  console.log('The solution is: ', rows[0].solution);
});

connection.end();

我可以使用Workbench连接到我的MySQL数据库-因此,我很确定我的凭据可以。

当我尝试连接时,出现以下错误:

Connection.js:91未捕获的TypeError:Net.createConnection不是函数

从npm库中调试代码-这是引发错误的地方connection.js

this._socket = (this.config.socketPath)
  ? Net.createConnection(this.config.socketPath)
  : Net.createConnection(this.config.port, this.config.host);

connection.js具有相关性:

var Net  = require('net');

我在Windows计算机上本地运行Node.js。

谁能告诉我是什么原因导致此错误?

创建了一个单独的票证: 调用Node.js
net.createConnection引发错误


问题答案:

net需要和MySQL节点模块中使用的模块是Node.js的本身的核心部分。您即将获得的Net.createConnection不是函数的错误意味着它将作为一个空对象出现,并且该错误与您对问题的评论之一有关:

我正在浏览器中测试代码。

您只能在Node.js上运行此特定模块,而不能在Web浏览器中运行它。

人们可以把一个可能性是通过像封隔器来运行代码browserify或的WebPack所以你可以很容易地require('mysql')在你的浏览器,但它不会工作。作为net模块核心依赖的mysql模块将转换为空对象{}。那不是一个bug,而是它应该如何工作的。浏览器没有通用的tcp实现,因此无法进行仿真。空对象旨在防止require('net')在浏览器中正常运行的模块发生故障。

为避免此错误,您需要在纯Node.js环境中而不是在浏览器中运行此代码。一个简单的服务器可以达到这个目的,因为浏览器中客户端中的此代码无法正常工作,并且会增加安全漏洞,因为客户端的所有操作都是操作性的,因此也不安全。您不想在客户端公开数据库,而只使用数据库。



 类似资料:
  • 问题内容: 我正在尝试为node.js创建一个可以在多种环境下工作的脚本。特别是对我来说,我正在OS X和Ubuntu之间来回切换。在前者中,Node安装为,而在后者中,安装为。在脚本的顶部,我可以有: 要么 只要安装了node,我宁愿脚本在任一环境中都作为可执行文件运行,而不是让一个或另一个必须指定命令(vs. )。 有什么方法可以指定备份hashbang或与node.js兼容的备份哈希吗? 问

  • 问题内容: 由于GAE具有严格的限制,例如-“ Java应用程序无法使用任何用于写入文件系统的类”。 是否有一个好的Java PDF库可以将PDF写入内存以流式传输到云? 问题答案: 根据这个在Google网上论坛上的主题(需要身份验证),PDFjet可以在GAE上使用(已进行了少许修改,以在某些地方用流替换文件)。正如他们在线程中所说: 这是一个相当低级的库,但是对于简单的任务应该可以。 到目前

  • 问题内容: 我正在尝试为Android创建一个仅向SSH服务器发送命令的应用程序。无需响应,我只需要能够发送命令即可。我想知道是否可以使用任何Java库? 不需要高级的东西,只需一个纯粹的连接即可发送命令。 问题答案: 您正在搜索JSch。 其他库是jaramiko,paramiko和trilead- ssh2 。connectbot项目是您可以浏览Trilead源代码的地方。请注意,connec

  • 我在Windows 2012R2上运行MySQL 5.6.26,mysql.ini一切都配置为使用UTF-8 Unicode(utf8)。 我用这张桌子: 当我执行以下SQL命令时: 数据库会将以下数据返回给我: 118 Veneanar Forscherliga 3 5 0 56 但它不应该返回任何内容,因为“Venean–r”没有条目。 这个问题发生在PHPMyAdmin中的PHP脚本(使用P

  • 问题内容: 是否有读取ePub格式的库?我在http://github.com/psiegman/epublib中找到了ePublib 。我仍在学习如何使用它。 是否有适用于Android的ePub jar? 问题答案: 我是epublib的作者。现在可以在Android上运行。参见http://www.siegmann.nl/epublib/android

  • 问题内容: 因此,寻找与py3k / py3.0 / py3000兼容的mysql-db-lib,有什么想法吗?谷歌什么也没出现。 问题答案: 至于MySQLdb的未来计划,您可能要问作者(Andy Dustman)。 他的博客在这里:http : //mysql- python.blogspot.com/