Le net
module requis et utilisé dans le module de nœud MySQL est une partie essentielle de Node.js lui-même. L'erreur que vous obtenez à propos de Net.createConnection
ne pas être une fonction signifie qu'il apparaît comme un objet vide et l'erreur est liée à l'un de vos commentaires sur la question :
Vous devez exécuter ce module particulier sur Node.js uniquement, vous ne pouvez pas l'exécuter dans un navigateur Web.
On pourrait penser qu'une possibilité serait d'exécuter votre code via un packer comme browserify
ou webpack
ainsi vous pouvez facilement require('mysql')
dans votre navigateur, mais cela ne fonctionnera pas. Le net
module qui est une dépendance centrale de mysql
module sera transformé en un objet vide {}
.Ce n'est pas un bug, c'est comme ça que ça doit fonctionner. Les navigateurs n'ont pas d'implémentation TCP générique, il ne peut donc pas être émulé. L'objet vide est destiné à empêcher require('net')
d'échouer sur des modules qui fonctionnent autrement dans le navigateur.
Pour éviter cette erreur, vous devez exécuter ce code dans un environnement Node.js pur, et non dans un navigateur. Un serveur simple pourrait servir à cet effet puisque ce code dans votre client dans un navigateur ne peut pas fonctionner et ajouterait une faille de sécurité car tout ce qui est côté client est manipulateur et en tant que tel non sécurisé. Vous ne voulez pas exposer votre base de données côté client, mais seulement la consommer.