【问题标题】:HTML5 page connect mysql database with node.jsHTML5页面用node.js连接mysql数据库
【发布时间】:2012-07-23 17:16:52
【问题描述】:

我已尝试使用 Joel 解决方案,但出现了一些错误。谁能告诉我问题出在哪里。

app.js

var app = require('http').createServer(handler)
, io = require('socket.io').listen(app)
, fs = require('fs')
, mysql = require('mysql')

var client = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '',
});

client.connect();

app.listen(3232);

function handler (req, res) {
    fs.readFile(__dirname + '/index.html',
    function (err, data) {
        if (err) {
            res.writeHead(500);
            return res.end('Error loading index.html');
        }

        res.writeHead(200);
        res.end(data);
    });
}

io.sockets.on('connection', function (socket) {
    socket.on('login', function(usr, pass){
        var TEST_DATABASE = 'mysqltest';
        var TEST_TABLE = 'users';

        client.query('USE '+TEST_DATABASE);

        client.query('SELECT name FROM '+TEST_TABLE+' WHERE user = "'+usr+'" AND password = "'+pass+'"', function(err, results) {
            if (err) throw err;
            console.log(results[0]); // [{1: 1}]
            socket.emit('retuLogIn',results[0]['name']);
        });

    });
    socket.on('disconnect', function(){
        console.log('Server has disconnected');
    });
});

index.html

<html>
    <title>WebSocket Client Demo [socket.io]</title>
    <script src="http://localhost:3232/socket.io/socket.io.js"></script>
    <script>
    function connect() {

        try
        {
            var socket = io.connect('http://localhost:3232/');
            socket.on("connect",function(){
                document.getElementById('status').innerHTML ="Browser has connected to the app server";
                socket.emit('login', document.getElementById('txtUser').value,
                document.getElementById('txtPass').value);

            });
            socket.on('retuLogIn', function (data) {
                document.getElementById('status').innerHTML = 'Welcome '+data;
            });
        }
        catch(err)
        {
            document.getElementById('status').innerHTML = err.message;
        }
    }
    </script>
    <body>
        <h1>WebSocket Client Demo</h1>
        <div><p id="status">Enter user and password to Log-In</p></div>
        <label>User :</label>
        <input id="txtUser" type="text" maxlength="10" />
        <label>Password :</label>
        <input id="txtPass" type="text" maxlength="10" />
        <button id="connect" onClick='connect()'/>Log-In</button>
    </body>
</html>

当我尝试在 node.js 中运行 app.js 文件时,它会给我以下错误:

C:\Program Files (x86)\nodejs>node "C:\Program Files (x86)\nodejs\app.js" info - socket.io started

C:\Program Files (x86)\nodejs\app.js:6 var client = mysql.createConnection({ ^ TypeError: Object # has no method 'createConnection' at Object. (C:\Program Files (x86)\nodejs\app.js:6:24) at Module._compile (module.js:449:26) at Object..js (module.js:467:10) at Module.load (module.js:356:32) at Function._load (module.js:312:12) at module.js:487:10 at EventEmitter._tickCallback (node.js:238:9)

C:\Program Files (x86)\nodejs>

我不明白问题出在哪里。我已经检查了安装的 mysql 模块。

请帮忙解决问题。

【问题讨论】:

  • @hvgotcodes 正如 OP 所说,app.js:6 var client = mysql.createConnection({ ^ TypeError: Object # has no method 'createConnection' at Object.
  • error is in app.js:6 var client = mysql.createConnection({^ TypeError: Object # has no method 'createConnection'
  • 谁能帮我找出解决问题的方法。很紧急。

标签: mysql html node.js


【解决方案1】:

@钱丹, 我有同样的错误(简要)

TypeError: Object #<Object> has no method 'createConnection'

检查了https://github.com/felixge/node-mysql,但没有其他人将其报告为问题。 安装最新(alpha)版本的 node mysql 模块解决了这个问题:

npm install mysql@2.0.0-alpha3

YMMV。 如果您在不更新 mysql 模块的情况下解决了问题,请通知我们。

【讨论】:

  • 嗨,Ignaseo,感谢您的回复。用 alpha3 更新 mysql 模块后,你的建议对我有用。我的浏览器在第一次完成后刷新后服务器工作的一件事,其他明智的不工作。有什么方法可以调试我的 .js 代码?
  • 这个答案帮助了我。我在 Ubuntu 上使用 MySQL 和 RailJS,更新 mysql 包解决了这个问题。
猜你喜欢
  • 2017-06-21
  • 2014-11-25
  • 2014-04-10
  • 2023-04-02
  • 2016-03-22
  • 2012-06-04
  • 2011-08-12
  • 1970-01-01
相关资源
最近更新 更多