【问题标题】:Socket.io with require.js async and io is undefinedSocket.io 与 require.js 异步且 io 未定义
【发布时间】:2014-08-06 09:22:02
【问题描述】:

有人可以向我解释为什么这样做:

 <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 库,并且在这种情况下可以正常工作(上面没有错误)。

【问题讨论】:

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


    【解决方案1】:
    <script async ...
    

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

    因此它不会等待脚本被获取并执行,然后再转到下一个脚本。因此,当您转到

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

    The MDN on script async

    【讨论】:

    • 如果我稍后在控制台尝试连接,错误仍然存​​在。
    • 真正的问题是为什么加载了 require.js 的 socket.io (1.0.x) 在全球范围内不可用?使用 0.9 版一切正常...
    猜你喜欢
    • 1970-01-01
    • 2020-04-14
    • 2011-08-03
    • 2022-12-11
    • 1970-01-01
    • 2011-11-28
    • 2019-10-21
    • 1970-01-01
    • 2013-12-26
    相关资源
    最近更新 更多