net
modul som krävs och används i MySQL-nodmodulen är en central del av själva Node.js. Felet du får om Net.createConnection
att inte vara en funktion betyder att det kommer upp som ett tomt objekt och felet är relaterat till en av dina kommentarer till frågan:
Du måste bara köra den här modulen på Node.js, du kan inte köra den i en webbläsare.
Man skulle kunna tro att en möjlighet skulle vara att köra din kod genom en packer som browserify
eller webpack
så att du enkelt kan require('mysql')
i din webbläsare men det fungerar inte. net
modul som är ett centralt beroende av mysql
modulen kommer att omvandlas till ett tomt objekt {}
.Det är inte en bugg, det är så det ska fungera. Webbläsare har inte generiska tcp-implementationer så det kan inte emuleras. Det tomma objektet är avsett att förhindra require('net')
från att misslyckas på moduler som annars fungerar i webbläsaren.
För att undvika detta fel måste du köra den här koden i en ren Node.js-miljö, inte i en webbläsare. En enkel server skulle kunna tjäna detta syfte eftersom denna kod i din klient i en webbläsare inte kan fungera och skulle lägga till ett säkerhetshål eftersom allt på klientsidan är manipulativt och som sådant inte säkert. Du vill inte exponera din databas på klientsidan utan bara konsumerar den.