Ошибка «Невозможно установить заголовки после их отправки» только в Cloud9

Я получаю следующую ошибку при совместном использовании Express и socket.io в Cloud9 ide:

http.js:707
    throw new Error('Can\'t set headers after they are sent.'); ^ Error: Can't set headers after they are sent.
    at ServerResponse.OutgoingMessage.setHeader (http.js:707:11)
    at ServerResponse.res.setHeader (/var/lib/stickshift/523075494382ec51c3000001/app-root/data/610464/node_modules/express/node_modules/connect/lib/patch.js:59:22)
    at next (/var/lib/stickshift/523075494382ec51c3000001/app-root/data/610464/node_modules/express/node_modules/connect/lib/proto.js:153:13)
    at Function.app.handle (/var/lib/stickshift/523075494382ec51c3000001/app-root/data/610464/node_modules/express/node_modules/connect/lib/proto.js:198:3)
    at Server.app (/var/lib/stickshift/523075494382ec51c3000001/app-root/data/610464/node_modules/express/node_modules/connect/lib/connect.js:65:37)
    at Manager.handleRequest (/var/lib/stickshift/523075494382ec51c3000001/app-root/data/610464/node_modules/socket.io/lib/manager.js:564:28)
    at Server. (/var/lib/stickshift/523075494382ec51c3000001/app-root/data/610464/node_modules/socket.io/lib/manager.js:118:10)
    at Server.EventEmitter.emit (events.js:117:20)
    at HTTPParser.parser.onIncoming (http.js:2056:12)
    at HTTPParser.parserOnHeadersComplete [as 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" и экспресс: "3.x". Эта ошибка появляется только на Cloud9 ide. На локальном хосте работает нормально. Пожалуйста помоги.


person Mahesh    schedule 13.09.2013    source источник
comment
У меня отлично работает: c9.io/fardjad/node_version_test   -  person fardjad    schedule 13.09.2013
comment
Это происходит при попытке записи или изменения заголовка ответа после его отправки.   -  person user568109    schedule 13.09.2013
comment
@fardjad, у меня тот же код, что и у вас, в server.js и в том же файле package.json, но я все еще получаю эту ошибку. Какую версию узла вы используете? Когда я пытаюсь получить доступ к приложению в браузере, я получаю вывод «Hello World», но после этого возникает ошибка, которую вы можете увидеть в консоли вывода cloud9 ide.   -  person Mahesh    schedule 13.09.2013
comment
process.version в моем рабочем пространстве c9v0.10.15.   -  person fardjad    schedule 13.09.2013


Ответы (1)


Я столкнулся с этой же проблемой. Хотя это не очень хорошее решение, возврат Express обратно к версии 3.1.0 решил эту проблему для меня. На высоком уровне кажется, что последние версии Express и Socket.io не очень хорошо работают вместе.

Версии, которые я использую после возврата:

Узел: 0.10.x,

Socket.io: 0.9.16,

Экспресс: 3.1.0

person Scampbell    schedule 19.11.2013