Socket.io客户端:获取错误“io未定义”或“#<object>没有方法'connect'”</object>

时间:2012-07-28 19:38:57

标签: node.js express socket.io client-side

好的,我基本上遇到与this相同的问题。但那里给出的答案对我不起作用。所以让我重新解释一下我的问题。首先,这是我的代码:
服务器端Javascript(app.js)

var io = require('socket.io');
...
var sio = io.listen(app);


客户端Javascript(client.js)

3: var socket = (s)io.connect('http://localhost:3000');
//the (s) represents testing with and without the s out of desperateness :)

客户端模板(Jade)

script(src='/socket.io/socket.io.js')
script(src='/javascripts/client.js')

所以从我读过的内容看起来socket.io似乎应该处理socket.io.js文件,但我猜我有一些配置错误,因为它没有这样做。无论如何,我得到的错误是:

GET http://localhost:3000/socket.io/socket.io.js 404 (Not Found)
Uncaught ReferenceError: io is not defined - client.js line 3

在做了一些研究之后,似乎我可以将jade文件更改为直接链接到稳定文件。所以通过将我的代码更改为:
客户端模板(Jade)

script(src='http://cdn.socket.io/stable/socket.io.js')
script(src='/javascripts/client.js')

然后我从中得到的错误是:

Uncaught TypeError: Object #<Object> has no method 'connect' - client.js line 3

我一直在努力解决这个问题。似乎我需要有socket.io-client所以我确保它已经安装。我不知道如果这样,但我也使用Express.js,我会给你我的文件的布局。
/项目

app.js  /node_modules  package.json  /public  /routes  /views

/项目/ node_modules

/connect  /express  /jade  /jquery  /socket.io  /stylus

/project/node_modules/socket.io

/benchmarks  index.js  Makefile       package.json  restrict_jsonp.patch
History.md   /lib      /node_modules  Readme.md

/project/node_modules/socket.io/node_modules

/policyfile  /redis  /socket.io-client

/项目/公共

/images  /javascripts  /jquery  /stylesheets

/项目/公共/ Javascript角

client.js

无论如何,任何帮助将不胜感激! :)

1 个答案:

答案 0 :(得分:1)

正如Felix Loether指出的那样,Express的API从2. *变为3. *花了太多时间试图找出重新编写代码的最佳方法后,我决定重新安装快递到这样做的早期版本:

npm install express@2.5.8 -g

对Express 2有更多的支持(截至今天)*因此我仍然在学习使用早期版本更好。