在我的Node.js应用程序中,我正在尝试连接到亚马逊上托管的MySQL数据库.
$ npm install mysql
Run Code Online (Sandbox Code Playgroud)
我的代码看起来像这样:
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();
Run Code Online (Sandbox Code Playgroud)
我可以使用Workbench连接到我的MySQL数据库 - 因此,我很确定我的凭据是可以的.
当我尝试连接时,我收到以下错误:
Connection.js:91 Uncaught TypeError:Net.createConnection不是函数
调试npm库中的代码 - 这是引发错误的地方connection.js:
this._socket = (this.config.socketPath)
? Net.createConnection(this.config.socketPath)
: Net.createConnection(this.config.port, this.config.host);
Run Code Online (Sandbox Code Playgroud)
该connection.js具有相关性:
var Net = require('net');
Run Code Online (Sandbox Code Playgroud)
我在Windows计算机上本地运行Node.js.
谁能告诉我可能导致此错误的原因是什么?
创建了一个单独的票证: 抛出调用Node.js net.createConnection的错误
HiD*_*Deo 20
的net需要和MySQL节点模块中使用的模块是Node.js的本身的核心部分.你得到的关于Net.createConnection不是函数的错误意味着它将作为一个空对象出现,并且错误与你对该问题的一个评论有关:
我正在浏览器中测试我的代码.
您必须仅在Node.js上运行此特定模块,不能在Web浏览器中运行它.
人们可以把一个可能性是通过像封隔器来运行代码browserify或的WebPack这样你就可以很容易地require('mysql')在你的浏览器,但它不会工作.作为net模块的核心依赖性的mysql模块将被转换为空对象{}.这不是一个错误,它应该如何工作.浏览器没有通用的tcp实现,因此无法模拟.空对象旨在防止require('net')在浏览器中工作的模块失败.
要避免此错误,您需要在纯Node.js环境中运行此代码,而不是在浏览器中运行.一个简单的服务器可以达到这个目的,因为浏览器中的客户端中的这些代码无法工作,并且会增加安全漏洞,因为客户端的所有操作都是操作性的,因此不安全.您不希望在客户端公开您的数据库,而只是消耗它.
| 归档时间: |
|
| 查看次数: |
8404 次 |
| 最近记录: |