La net
El módulo requerido y utilizado en el módulo de nodo de MySQL es una parte central del mismo Node.js. El error que está recibiendo sobre Net.createConnection
no ser una función significa que aparece como un objeto vacío y el error está relacionado con uno de sus comentarios a la pregunta:
Debe ejecutar este módulo en particular solo en Node.js, no puede ejecutarlo en un navegador web.
Uno podría pensar que una posibilidad sería ejecutar su código a través de un empaquetador como browserify
o paquete web
para que pueda fácilmente require('mysql')
en su navegador pero no funcionará. La net
módulo que es una dependencia central de mysql
el módulo se transformará en un objeto vacío {}
.Eso no es un error, es cómo se supone que debe funcionar. Los navegadores no tienen implementaciones genéricas de tcp, por lo que no se pueden emular. El objeto vacío está destinado a evitar require('net')
de fallar en módulos que de otro modo funcionan en el navegador.
Para evitar este error, debe ejecutar este código en un entorno puro de Node.js, no en un navegador. Un servidor simple podría cumplir este propósito, ya que este código en su cliente en un navegador no puede funcionar y agregaría un agujero de seguridad ya que todo lo que está en el lado del cliente es manipulable y, como tal, no es seguro. No desea exponer su base de datos en el lado del cliente, sino que solo la consume.