带有require.js async和io的Socket.io未定义

时间:2014-06-16 14:05:20

标签: javascript node.js socket.io requirejs socket.io-1.0

有人可以向我解释为什么这项工作:

 <script src="//cdn.socket.io/socket.io-1.0.4.js"></script>
 <script>
        var socket = io('http://nodeapp.herokuapp.com');
        console.log(socket);
 </script>

但这不起作用:

 <script async src="//cdn.socket.io/socket.io-1.0.4.js"></script>
 <script>
        var socket = io('http://nodeapp.herokuapp.com');
        console.log(socket);
 </script>

错误是:

     Uncaught ReferenceError: io is not defined 

或者我如何在客户端使用require.js附加socket.io库,并且在这种情况下工作正常(上面没有错误)。

1 个答案:

答案 0 :(得分:4)

<script async ...

您明确要求浏览器不要等到它获取脚本。

因此它不会等待脚本在进入下一个脚本之前被提取和执行。因此,当您转到

时,io尚未定义
var socket = io('http://nodeapp.herokuapp.com');

The MDN on script async