2

Cloud9 ide で Express と socket.io を一緒に使用すると、次のエラーが発生します。

http.js:707
    throw new Error('Can\'t set headers after they sent.'); ^ エラー: 送信後にヘッダーを設定できません。
    ServerResponse.OutgoingMessage.setHeader (http.js:707:11) で
    ServerResponse.res.setHeader (/var/lib/stickshift/523075494382ec51c3000001/app-root/data/610464/node_modules/express/node_modules/connect/lib/patch.js:59:22) で
    次に (/var/lib/stickshift/523075494382ec51c3000001/app-root/data/610464/node_modules/express/node_modules/connect/lib/proto.js:153:13)
    Function.app.handle で (/var/lib/stickshift/523075494382ec51c3000001/app-root/data/610464/node_modules/express/node_modules/connect/lib/proto.js:198:3)
    Server.app (/var/lib/stickshift/523075494382ec51c3000001/app-root/data/610464/node_modules/express/node_modules/connect/lib/connect.js:65:37) で
    Manager.handleRequest で (/var/lib/stickshift/523075494382ec51c3000001/app-root/data/610464/node_modules/socket.io/lib/manager.js:564:28)
    サーバーで。(/var/lib/stickshift/523075494382ec51c3000001/app-root/data/610464/node_modules/socket.io/lib/manager.js:118:10)
    Server.EventEmitter.emit (events.js:117:20) で
    HTTPParser.parser.onIncoming (http.js:2056:12) で
    HTTPParser.parserOnHeadersComplete で [onHeadersComplete として] (http.js:120:23)

以下は私のserver.jsコードです:

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


server.listen(process.env.PORT, process.env.IP);

app.get('/', function(req,res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.write('Hello World\n');
})

node: "0.10.x"、socket.io: "0.9.14"、express: "3.x" を使用しています。このエラーは Cloud9 ide でのみ発生します。ローカルホストでは問題なく動作します。助けてください。

4

1 に答える 1

0

私はこれとまったく同じ問題に遭遇しました。これは良い解決策ではありませんが、Express をバージョン 3.1.0 に戻すことで解決しました。Express と Socket.io の最新バージョンがうまく連携しないことは、大まかに言えば明らかです。

復帰後に使用しているバージョンは次のとおりです。

ノード: 0.10.x

Socket.io: 0.9.16

エクスプレス: 3.1.0

于 2013-11-19T04:16:35.530 に答える