2014-10-16 100 views
0

我正在開發一個簡單的socket.io項目,並且遇到了問題。當我將腳本<script src="/socket.io/socket.io.js"></script><script type="text/javascript">var socket = io(); </script>添加到頭部時,我期待應用程序識別此問題,但是在我的控制檯中收到了錯誤消息GET http://localhost:5678/socket.io/socket.io.jsUncaught ReferenceError: io is not defined。我正在使用快速框架。將socket.io/socket.io.js加載到html頭部,返回「ReferenceError:io未定義」

var express = require('express'); 
var router = express.Router(); 
var http = require('http').Server(express); 
var io = require('socket.io')(http); 

/* GET home page. */ 
router.get('/', function(req, res) { 
    res.render('index', { title: 'NodeIM' }); 
}); 

io.on('connection', function(socket){ 
    console.log('a user connected'); 
    socket.on('disconnect', function(){ 
    console.log('user disconnected'); 
    }); 
}); 

server = http.listen(3000, function() { 
    console.log('Listening on port %d', server.address().port); 
}); 

module.exports = router; 

HTML:

<html> 
    <head> 
     <title>NodeIM</title> 
     <link rel="stylesheet" href="/stylesheets/style.css"> 
     <script src="/socket.io/socket.io.js"></script> 
     <script type="text/javascript">var socket = io(); </script> 
     <style type="text/css"></style> 
    </head> 
    <body> 
     <h1>NodeIM</h1> 
     <p>Welcome to NodeIM</p> 
     <hr> 
     <ul id="messages"></ul> 
     <form id="im_form" action=""><input id="m" autocomplete="off"><button>Send</button></form> 
    </body> 
</html> 

注:我也試圖按照socket.io - ReferenceError: io is not defined和改變了我的SRC到src="http://localhost:5678/socket.io/socket.io.js",但它並沒有解決這個問題。我也試着使用Node.js socket.io.js not found or io not defined,這只是表明我需要socket.io的另一種方式,但不能解決我有對src

+0

您使用的是什麼版本的Express?這個錯誤很可能是因爲你沒有正確完成服務器端的初始化,所以socket.io庫沒有爲'/ socket.io/socket.io.js'設置路由。 – jfriend00 2014-10-16 18:26:00

+0

我正在使用Express版本'4.9.0' – maudulus 2014-10-16 18:35:34

回答

0

你的/socket.io/socket.io.js使用的ReferenceError問題是正確的。但是,您設置的http服務器有一個錯字:var http = require('http').Server(express);應該可能是var http = require('http').Server(router);

-1

Socket.io你應該把<script>正上方關閉</body> -tag在聊天演示說明。像這樣:

<script src="/socket.io/socket.io.js"></script> 
<script> 
    var socket = io(); 
</script> 
</body> 
+1

我沒有看到爲什麼這應該比OP已經使用的代碼更好地解決問題。我在''部分有我的客戶端socket.io,它在那裏工作得很好。 – jfriend00 2014-10-16 18:24:56

+0

它解決了我的問題... – Minato 2014-10-16 20:23:05