Ошибка в библиотеке MySQL для Node.js

В моем приложении Node.js я пытаюсь подключиться к базе данных MySQL, размещенной на Amazon.

$ 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();

Я могу подключиться к моей базе данных MySQL с помощью Workbench - поэтому я уверен, что мои учетные данные в порядке.

Когда я пытаюсь подключиться, я получаю следующую ошибку:

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);

connection.js имеет зависимость:

var Net  = require('net');

Я запускаю Node.js локально на моем компьютере с Windows.

Может кто-нибудь сказать мне, что может быть причиной этой ошибки?

Создан отдельный тикет:Ошибка при вызове Node.js net.createConnection

 user152691229 июн. 2016 г., 01:36
Я тестирую свой код в браузере
 user152691227 июн. 2016 г., 01:11
это не полномочия Амазонки. Ошибка указывает, что метод net.connection не может быть найден
 HiDeo28 июн. 2016 г., 11:25
Как вы тестируете свой код? Чистая среда node.js? Браузер? Вы используете упаковщик, как веб-пакет или что-то подобное?
 Ashwani Agarwal24 июн. 2016 г., 07:15
 user152691229 июн. 2016 г., 05:42
 user152691224 июн. 2016 г., 07:39
Мой узел версии 4.2.3
 diEcho29 июн. 2016 г., 06:25
Вы связаны с Amazon RDS?
 Vasil Dininski24 июн. 2016 г., 07:25
Поскольку вы отладили его и нашли основную причину, возможно, проблема в версии node.js. Какую версию узла вы используете именно?
 Eshwar Prasad Yaddanapudi24 июн. 2016 г., 09:06
Может ли быть так, что ваши учетные данные Amazon? где-то? хотя не уверен

Ответы на вопрос(1)

Решение Вопроса

net модуль, необходимый и используемый в модуле узла MySQL, является основной частью самого Node.js. Ошибка, о которой вы получаетеNet.createConnection не быть функцией означает, что она появляется как пустой объект и ошибка связана с одним из ваших комментариев к вопросу:

Я тестирую свой код в браузере.

Вы должны запустить этот конкретный модуль только на Node.js, вы не можете запустить его в веб-браузере.

Можно подумать, что возможно будет запустить ваш код через упаковщик, какbrowserify или жеWebPack так что вы можете легкоrequire('mysql') в вашем браузере, но это не сработает.net модуль, который является основной зависимостьюmysql модуль будет преобразован в пустой объект{}, Это не ошибка, это то, как это должно работать. Браузеры не имеют общих реализаций tcp, поэтому их нельзя эмулировать. Пустой объект предназначен для предотвращенияrequire('net') от сбоя на модулях, которые иначе работают в браузере.

Чтобы избежать этой ошибки, вам нужно запускать этот код в чистой среде Node.js, а не в браузере. Простой сервер мог бы служить этой цели, так как этот код в вашем клиенте в браузере не может работать и добавил бы дыру в безопасности, так как все на стороне клиента манипулирует и, как таковое, не является безопасным. Вы не хотите выставлять свою базу данных на стороне клиента, а только используете ее.

 Dustin03 апр. 2017 г., 13:43
но этого бы не случилось, если бы я запускал локальный сервер с экспрессом, не так ли? потому что я сталкиваюсь с той же ошибкой и не могу найти решение этой проблемы. но это только появляется, если я использую createConnection, если я использую пул, это работает блестяще.
 Sayed Mohd Ali27 нояб. 2018 г., 11:29
Что если я использую API остальных для создания соединения и сохраненных данных? Я надеюсь, что будет работать с Webpack и browserify.

Ваш ответ на вопрос