/socket.io/socket.io.jsの読み込みに失敗するとき
Express(node.js)でSocket.ioをつかったアプリを開発している時にエラーがおきました。
その対処法がなかなかわからなかったので、忘備録として残しておきます。
環境
- Mac OSX 10.8.4 Mountain Lion
- Node.js v0.10.12
- Express v3.3.1
- Socket.io v0.9.16
ローカル開発です。
起きたエラー
クライアント側でsocket.io.jsが読み込まれない。
ChromeのConsoleに以下のように表示される。
Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:3000/socket.io/socket.io.js Uncaught ReferenceError: io is not defined
対処方法
app.jsを以下のように書き換えた。
コードの該当部分のみを抜粋。
変更前
var app = module.exports = express.createServer(); http.createServer(app).listen(app.get('port'), function(){ console.log('Express server listening on port ' + app.get('port')); }); var io = require('socket.io').listen(app);
変更後
var app = express(); var server = http.createServer(app).listen(app.get('port'), function(){ console.log('Express server listening on port ' + app.get('port')); }); var io=require('socket.io').listen(server);