Jade中列出的脚本无法在我的JavaScript中访问

时间:2015-05-25 19:01:23

标签: javascript pug

在运行快速应用程序时,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中的代码可以找到它的方式包含该脚本?

如果这是服务器端,我只是'要求'它。

2 个答案:

答案 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>

将此翻译成玉。