无法使用node.js加载socket.io:io未定义

我使用express生成器生成了一个快速应用程序,并且在包含socket.io时我注意到,socket.io客户端没有被浏览器加载。 我在互联网上搜索了两天,找不到解决方案。

我遵循socket.io指令进行express 3/4,实际上服务器公开的socket.io客户端正在被服务(没有404错误)。 问题是,当试图使用socket io客户端的javascript代码因为“io未定义”而失败时

尽管HTTP GET to http:// localhost:8080 / socket.io / socket.io.js返回HTTP 200,但浏览器为什么没有加载客户端?

顺便说一句,该应用程序也使用Angular.js。

的index.html

<script src="http://localhost:8080/socket.io/socket.io.js"></script>
<script type="text/javascript">
 // Uncaught ReferenceError: io is not defined
 var socket = io.connect('http://localhost:8080');
</script>

app.js(没有错误日志和socket.io服务器调试消息说“socket.io:server服务客户端源+ 3s”)

// setup server
app.set('port', process.env.PORT || 8080);

var server = require('http').Server(app);
var io = require('socket.io')(server);

console.log(app.get('port'));

server.listen(app.get('port'),  function() {
  console.log('Express server listening on port ' + server.address().port);

});


io.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {
    console.log(data);
  });
});

更新:

通过使用socket.io CDN,结果是一样的。 这是行不通的

<script src="https://cdn.socket.io/socket.io-1.4.5.js"></script>

我正在回答我自己的问题。 我终于找到了解决这个问题的办法,但我仍然不知道原因是什么。

解决方案是在任何其他标签(有16个脚本声明:angular,bootstrap,jquery,moment等)之前移动<script src="/socket.io/socket.io.js"></script>

因此,如果您在浏览器中首先将“未捕获的ReferenceError:io未定义”消息先移动到页面开始处的标记内 。 它会为您节省很多努力,使其工作。

链接地址: http://www.djcxy.com/p/63187.html

上一篇: Can't load socket.io using node.js: io is not defined

下一篇: Socket.io not responding, Node.js