45

何らかの理由で、ノード サーバーがルートを提供できず/socket.io/socket.io.js、常に 404 エラーが発生します。
さまざまなノードバージョンをコンパイルしてみました(現在は0.6.13で、実際に動作するサーバーでも実行されます)。
app.js から、socket.io.js を呼び出そinfo: socket.io startedうとしてもエラーは発生しません。

ローカルホストとポート 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
4

6 に答える 6

95

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

于 2012-04-17T13:20:31.917 に答える
4

Express 3 Web フレームワークでの使用: ( socket.io から)

> Express 3 では、http.Server最初に socket.io をアタッチするためにa をインスタンス化する必要があります。

意味 - (1) サーバー インスタンスを作成する必要があります。

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

(2) socket.io と結合します。

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

そしてその時だけ - (3) サーバーにリッスンさせる:

http.listen(8080);

この順番を守ってください!

于 2014-01-15T15:57:36.627 に答える
1

ノード 0.8.1 をインストールした後、同じ問題が発生しました。プロジェクト フォルダーの node_modules マップを削除し、express/socket.io を再インストールしました。その後、質問のコードで再び正常に機能しました。

于 2012-07-03T06:33:41.817 に答える
0

私のUbuntu 11.10では、変数を適切に設定していませんNODE_PATH。Linux/Macを使用している場合は、以下の行を.bashrc/.zshrcファイルに追加してみてください。

export NODE_PATH=/usr/lib/node_modules:$NODE_PATH
于 2012-04-17T12:48:29.513 に答える