找不到socket.io.js

出于某种原因,我的节点服务器不能服务路由/socket.io/socket.io.js ,我总是得到一个404错误。
我试着编译不同的节点版本( 当前是0.6.13,它也运行在服务器上,实际上工作 )。
从app.js我得到的info: socket.io started并尝试调用socket.io.js时没有错误。

我尝试从本地主机和端口8000,我使用快速框架

这是来自app.js的代码:

 var express = require('express') , app = require('express').createServer() , io = require('socket.io').listen(app, { log: true }); app.listen(8000); app.configure(function() { app.use(express.static(__dirname + '/public')); app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); }); io.sockets.on('connection', function (socket) { // all other stuff here 

请检查您的Express版本。 Express最近更新到3.0alpha哪个API被更改。 如果3.0你可以改变你的代码是这样的:

 var express = require('express') , http = require('http'); var app = express(); var server = http.createServer(app); var io = require('socket.io').listen(server); ... server.listen(8000); 

与连接相同的问题: https : //github.com/senchalabs/connect/issues/500#issuecomment-4620773

使用Express 3 Web框架 🙁 从socket.io )

> Express 3要求您实例化一个http.Server来将socket.io附加到第一个:

含义 – (1)您必须创build一个服务器实例:

 var app = express(); var http = require('http').createServer(app); 

(2)将其与socket.io耦合:

 var io = require('socket.io'); io.listen(http); 

只有 – (3)让服务器侦听:

 http.listen(8080); 

确保你保持这个订单!

安装节点0.8.1后,我有同样的问题。 我刚刚删除了我的项目文件夹中的node_modules映射,并重新安装了express / socket.io。 之后,它在你的问题中的代码再次正常工作。

也许这可以帮助你,在我的Ubuntu 11.10我没有正确设置NODE_PATHvariables,如果你在Linux / MAC上尝试添加行到你的.bashrc / .zshrc文件。

 export NODE_PATH=/usr/lib/node_modules:$NODE_PATH 

在存储库中安装Socket.io:

 npm install socket.io --save 

之后,configuration服务器:

  var express = require('express') var app = express(); var server = require('http').createServer(app); var io = require('socket.io').listen(server); server.listen(app.get('80')); // not 'app.listen' 

并在您的存档HTML/EJS或其他你想要的,添加:

 <script src="/socket.io/socket.io.js"></script> 

检查是否适用于Console (Chrome / Mozilla等)。

在我的例子中,我使用Chrome(Ctrl + shift + I):

在这里输入图像描述