Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js express 3 socket.io =发送后无法设置标头大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我是学习node.js的新手,似乎遇到了一个无法修复错误.

它是一个非常简单的初学者代码所以不需要太多解释,更多的是它在localhost上工作正常,但在生产服务器上中断.

App.js

var express = require('express'),routes = require('./routes'),http = require('http'),path = require('path');

var app = express();

app.configure(function(){
  app.set('port',process.env.PORT || 8000);
  app.set('views',__dirname + '/views');
  app.set('view ENGIne','jade');
  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(path.join(__dirname,'public')));
});

app.configure('development',function(){
  app.use(express.errorHandler());
});

app.get('/',routes.indeX);

var server = app.listen(8000);
var io = require('socket.io').listen(server);

server.listen(app.get('port'),function(){
  console.log("Express server listening on port " + app.get('port'));
});@H_616_12@ 
 

这是可怕的错误

http.js:644
    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:644:11)
    at ServerResponse.res.setHeader (/home1/artalatc/public_html/cloud1/node_modules/express/node_modules/connect/lib/patch.js:59:22)
    at next (/home1/artalatc/public_html/cloud1/node_modules/express/node_modules/connect/lib/proto.js:153:13)
    at Function.app.handle (/home1/artalatc/public_html/cloud1/node_modules/express/node_modules/connect/lib/proto.js:198:3)
    at Server.app (/home1/artalatc/public_html/cloud1/node_modules/express/node_modules/connect/lib/connect.js:66:31)
    at Manager.handlerequest (/home1/artalatc/public_html/cloud1/node_modules/socket.io/lib/manager.js:564:28)
    at Server.<anonymous> (/home1/artalatc/public_html/cloud1/node_modules/socket.io/lib/manager.js:118:10)
    at Server.EventEmitter.emit (events.js:115:20)
    at httpParser.parser.onIncoming (http.js:1793:12)
    at httpParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:111:23)@H_616_12@ 
 

问题似乎是在var io = require(‘socket.io’).listen(server);因为评论这样可以消除错误.

解决方法

您使用的是什么版本的Node?

当我使用0.9.x时,我遇到了同样的问题.我把Node降级到0.8.4,这个问题似乎已经消失了.

我最好的猜测是Node已经改变了Socket.io不同意的东西.

大佬总结

以上是大佬教程为你收集整理的node.js express 3 socket.io =发送后无法设置标头全部内容,希望文章能够帮你解决node.js express 3 socket.io =发送后无法设置标头所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。