好的,我基本上遇到与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
无论如何,任何帮助将不胜感激! :)
答案 0 :(得分:1)
正如Felix Loether指出的那样,Express的API从2. *变为3. *花了太多时间试图找出重新编写代码的最佳方法后,我决定重新安装快递到这样做的早期版本:
npm install express@2.5.8 -g
对Express 2有更多的支持(截至今天)*因此我仍然在学习使用早期版本更好。