找不到Socket.io.js(node.js + express + socket.io)

时间:2014-08-27 10:47:51

标签: javascript node.js express socket.io

我一直在检查其他相关答案,例如:

但我找不到解决问题的方法。

这正是我所做的:

通过Windows可执行文件安装节点,然后:

express node6 --hogan --ejs 
cd node6
npm install
npm install socket.io

npm start

我的app.js是默认的,但我添加了以下行以将其与socket.io链接:

var http = require('http');
var server = http.createServer(app);
var io = require('socket.io')(server);
io.listen(http);
http.listen(3000);

Here's the complete app.js file

我还尝试复制并粘贴节点http服务器使用Express 3/4 或app.js详细in the socket.io docs的示例,但是调用npm start时,他们都会抛出错误。

然后,在我的hoggn视图中,我试图以这种方式加载socket.io:

<script type="text/javascript" src="/socket.io/socket.io.js"></script>

据我所知,node.js应该自动获取它,但在我的情况下它不是。为什么? 快递版:4.2.0

这是错误页面:

  

未找到
  404个
  错误:未找到
      在Layer.app.use.res.render.message [作为句柄](C:\ inetpub \ wwwroot \ node6 \ app.js:29:15)
      在trim_prefix(C:\ inetpub \ wwwroot \ node6 \ node_modules \ express \ lib \ router \ index.js:240:15)
      在C:\ inetpub \ wwwroot \ node6 \ node_modules \ express \ lib \ router \ index.js:208:9
      在Function.proto.process_params(C:\ inetpub \ wwwroot \ node6 \ node_modules \ express \ lib \ router \ index.js:269:12)
      在下一个(C:\ inetpub \ wwwroot \ node6 \ node_modules \ express \ lib \ router \ index.js:199:19)
      在下一个(C:\ inetpub \ wwwroot \ node6 \ node_modules \ express \ lib \ router \ index.js:176:38)
      在C:\ inetpub \ wwwroot \ node6 \ node_modules \ express \ lib \ router \ index.js:137:5
      在C:\ inetpub \ wwwroot \ node6 \ node_modules \ express \ lib \ router \ index.js:250:10
      在下一个(C:\ inetpub \ wwwroot \ node6 \ node_modules \ express \ lib \ router \ index.js:160:14)
      在下一个(C:\ inetpub \ wwwroot \ node6 \ node_modules \ express \ lib \ router \ index.js:176:38)

1 个答案:

答案 0 :(得分:2)

而不是npm install socket.io,你必须做npm install socket.io --save所以socket.io模块安装在你的web开发文件夹中(在你的index.html或索引的基本位置/运行此命令。 php是)。这会将socket.io安装到运行命令的区域,而不是全局安装,此外,它会自动更正/更新package.json文件,以便node.js知道它在那里。

然后将源路径从'/socket.io/socket.io.js'更改为'http://' + location.hostname + ':3000/socket.io/socket.io.js'