2012-07-25 45 views
0

我試過Joel解決方案,但得到一些錯誤。有人可以告訴我問題在哪裏。HTML5頁面連接mysql數據庫與node.js

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> 

當我嘗試運行app.js文件中的Node.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模塊。

請幫忙解決問題。

+0

有什麼錯誤? – hvgotcodes 2012-07-25 12:22:10

+0

@hvgotcodes as OP說,'app.js:6 var client = mysql.createConnection({^ TypeError:Object#在Object處沒有方法'createConnection'。' – 2012-07-25 12:44:26

+0

錯誤在app.js中:6 var client = mysql .createConnection({^ TypeError:對象#沒有方法'createConnection' – 2012-07-26 06:15:41

回答

4

@Chandan, 我有同樣的錯誤(簡述)

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

經過https://github.com/felixge/node-mysql,但沒有人被報告爲一個問題。 安裝mysql的節點模塊的最新(阿爾法)版本解決了這個問題:

npm install [email protected] 

情況因人而異。 如果你想知道沒有更新你的mysql模塊,請告訴我們。

+0

您好,Ignaseo,謝謝回覆。 alpha3。服務器工作後,第一個完成其他明智的不工作後瀏覽器刷新工作有什麼辦法可以調試我的.js代碼 – 2012-08-06 10:07:28

+0

這個答案幫了我,我在Ubuntu上使用MySQL與RailwayJS,並更新mysql包修正了這個問題。 – JohnnyCoder 2012-10-25 03:10:26