2014-10-16 88 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