在运行快速应用程序时,Jade模板包含两个脚本行:
script(src="https://cdn.socket.io/socket.io-1.3.5.js") <== library
script(src="main.js") <== my code
但是当我从main.js中的JavaScript调用第一个脚本中定义的内容时,我收到错误:
Uncaught TypeError: Cannot read property 'connect' of undefined
违规行是这一行:
var io = io.connect();
在第一个socket.io脚本中定义了哪个。如何以我的main,js中的代码可以找到它的方式包含该脚本?
如果这是服务器端,我只是'要求'它。
答案 0 :(得分:1)
关于访问io javascript
您可以在网络或控制台选项卡中检入开发人员工具,以查找套接字js是否正在模板中加载。
您可以使用node:
进行安装npm install socket.io
var io = require('socket.io')(80);
除此之外,您可以直接转到此页面https://cdn.socket.io/socket.io-1.3.5.js并将该页面中的代码复制到本地js文件(socket.js或您想要调用它的任何内容)中,然后将其作为您需要会有任何其他文件。
或者找一个不同的cdn来尝试从中访问它。
关于您获得的错误
你有没有在任何地方定义io
?
答案 1 :(得分:1)
试试这个版本
https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.3.5/socket.io.js
https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.3.5/socket.io.min.js
Socket io使用browserify将脚本编译成一个文件。
您使用的版本可能已损坏。 如果这还没有解决,请尝试使用npm socket-io.client lib。
npm install --save socket.io
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io();
</script>
将此翻译成玉。