socket.io.js not found
Solution 1
Please check your Express version. Express recently is updated to 3.0alpha which API was changed. If 3.0 you can change your code to something likes this:
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);
Same issue with connect: https://github.com/senchalabs/connect/issues/500#issuecomment-4620773
Solution 2
Using with the Express 3 web framework: (from socket.io)
> Express 3 requires that you instantiate a http.Server
to attach socket.io to first:
meaning - (1) you must create a server instance:
var app = express();
var http = require('http').createServer(app);
(2) couple it with the socket.io:
var io = require('socket.io');
io.listen(http);
and ONLY THEN - (3) make the server listen:
http.listen(8080);
make sure you keep this order!
Solution 3
After installing node 0.8.1 I had the same problem. I just deleted the node_modules map in my project folder and reinstalled express/socket.io. After that it worked fine again with the code in your question.
Related videos on Youtube
dan-lee
Updated on July 09, 2022Comments
-
dan-lee almost 2 years
For some reason my node server cannot serve the route
/socket.io/socket.io.js
, I always get a 404 error.
I tried compiling different node versions (current is 0.6.13 which also runs on server, where it actually works).
From the app.js I getinfo: socket.io started
and no error when trying to call the socket.io.js.I try it from localhost and port 8000 and I use the express framework
This is the code from 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
-
freakish about 12 yearsShow us your code (socket.io initialization and framework initialization if you are using one).
-
-
dan-lee about 12 yearsI added the
node_modules
to my NODE_PATH but it still doesn't work. Too bad, it really raised my hopes. But strangely enough, when installing something via npm it says:Checking for node path: not found
. But when echoing $NODE_PATH I get/usr/local/lib/node:/usr/local/lib/node_modules
. I am really confused at this point. -
dan-lee about 12 yearsOk that sounds very close, I replaced it with your code and now I get this error when I try to start the server:
Cannot call method 'on' of undefined
. This corresponds to following code piece:io.sockets.on('connection', function (socket) {
. This is just plain weird. I feel so lost. -
dan-lee about 12 yearsbtw I forgot to add that I actually have express 3.0alpha installed
-
nguyenkha about 12 yearsSorry, I write wrong code of socket.io. I updated it, please change your code again.
-
dan-lee about 12 yearsGreat that was it! Thank you very much! :)
-
nguyenkha about 12 yearsNo problem, it has just happened to me half a day ago :)
-
Diogo Gomes about 11 yearsFor future reference don't forget to change
app.listen()
toserver.listen()
if you are using example snippets. -
pedalpete almost 11 yearsI had tried probably 15 or 20 different variations of very similar code. This is the one that worked for me. Thanks!
-
mineroot almost 9 yearsIt was very useful for me. Thanks a lot!
-
Admin over 5 yearsThis solution is viable with Docker too. Check this post for an live example.